Posted: 19.02.2011 15:30 Post subject: Post/Redirect/GET, dupli submit i sl...
Pozdrav,
evo danas sam zapeo napraviti formu za kontakt... i uzeti u obzir razne situacije u kojima bi se ona mogla naći.
Molim za savjet, koje metode koristite za sprečavanje duplog submita, i "resubmit" pitanja kod "back" gumba nakon submita forme?
ono što sam našao, je PRG i eventualno neka varijanta sa TOKENOM (hidden field u formi + session varijabla...) al imam dosta muke oko toga (iskreno, nemam točno "definirane" te muke, jer sam valjda probao na 37 različitih načina i kombinacija...)
ima li što spretnije? postoji li neki tut. koji možda nisam našao?
mozda:
probas sa kukijem koji ima expiration na recimo 1 minutu ili sekundu, sto god.
Znaci prvi put submitas formu i odmah postavis kuki, svaki sljedeci submit narednu minutu nece proci jer ces ti u kodu postaviti provjeru da li kuki postoji.
Ako postoji, nema submita, ako ne postoji - pustis ga.
Add a hidden variable in your pages/forms called as token.
When page is rendered, set some value to this token, using a counter too.
Put next counter value in session.
When the form is submitted, check if the token is equal or less than the value in session, if yes then take appropriate action.
(ovo će sprijećiti dupli sumbit na refreshu)
u skripti koja radi obradu, poruku da je mail poslan ili pak da ima nekih problema, pohranim u session varijablu i vratim se na glavnu stranicu za kontakt kroz GET redirect.
prije ispisa kontakt forme provjerim da li ima šta u toj session varijabli, i ak ima ispišem te je nakon toga ispraznim.
za sada to radi ok.. ako je JS uključen, dodatno prije submita napravim provjere koje me interesiraju.
problem mi je (za sada jednini, al sam tolko vremena ubio danas da ću ga zaboraviti) taj što kad se pritisne "BACK" vraća vrijednosti koje su bile unašane u formu... al ok
tomek
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum