Státusz megőrzése form-resubmit tiltással
Sziasztok!
A bonyolult cím ellenére a probléma elég gyakori:
1. Szeretném megakadályozni, hogy a lapot újratöltve a felhasználó ismételten elküldhesse az űrlapot.
2. Úgy eleget tenni az egyes pontnak, hogy a szkript "emlékezzen" arra, hogy az űrlap ki lett töltve, és annak megfelelően dobjon egy státusz-üzenetet. (Ez után a form újra szerepel, tehát külön fájlba nem tehető, illetve az URL után se fűzzünk semmit - és a lapot újratöltve a státusz már ne jelenjen meg.)
Arra lennék kíváncsi, hogy a legegyszerűbb megoldást találtam-e meg, vagy létezik-e erre jobb gyakorlat. Az én megfejtésem szerint:
1. Az elküldött űrlap feldolgozása után
2. Ezért az átirányítás előtt egy
Tehát van-e ennél jobb, célszerűbb módszer?
Előre is köszönve a válaszokat,
Ádám
■ A bonyolult cím ellenére a probléma elég gyakori:
1. Szeretném megakadályozni, hogy a lapot újratöltve a felhasználó ismételten elküldhesse az űrlapot.
2. Úgy eleget tenni az egyes pontnak, hogy a szkript "emlékezzen" arra, hogy az űrlap ki lett töltve, és annak megfelelően dobjon egy státusz-üzenetet. (Ez után a form újra szerepel, tehát külön fájlba nem tehető, illetve az URL után se fűzzünk semmit - és a lapot újratöltve a státusz már ne jelenjen meg.)
Arra lennék kíváncsi, hogy a legegyszerűbb megoldást találtam-e meg, vagy létezik-e erre jobb gyakorlat. Az én megfejtésem szerint:
1. Az elküldött űrlap feldolgozása után
header('Location: '.$_SERVER['REQUEST_URI']);
- Ez eddig tökéletes, csak emiatt már nem fog emlékezni az újratöltés után, hogy post-olva lett a form.2. Ezért az átirányítás előtt egy
$_SESSION['message']
változóban jelzem, hogy milyen visszajelzést kell adni a felhasználó számára (persze átirányítás után exit()
, hogy a sessionbe bele is írja - vagy akár előtte egy session_write_close()
, de előbbivel nem fut tovább feleslegesen a szkript), majd utána kiolvasom, és megjelenítem, ha talált $_SESSION['message']
-et, végül unset()
-elem azt.Tehát van-e ennél jobb, célszerűbb módszer?
Előre is köszönve a válaszokat,
Ádám
egyedi azonosító
köszönöm