Kako izbjeci Alert na FF kad se vratim na prethodnu stranicu?

Ako odete na https://connect.computility.com/directories/index.php?id=vnhQMWw0mu7H kliknite na “Advanced Search”.
Onda submit formular nakon sto odaberete npr. pod “Demo” drop-down menu odaberite “Conference Seminar”. Dobicete nekih 15-tak organizacija. Kliknete na link (ime) bilo koje firme i dobicete “detail page” te firme. E, sad pocinje “problem”. Ako kliknete na “Back” na browseru dobicete Alert poruku (Firefox: “To display this page, Firefox must send information that will repeat any action (such as search or order confirmation) that was performed earlier”, ili Chrome: “This web page requires data that you entered earlier in order to be properly displayed…” Itd.)
Kako da mimoidjem tu poruku?

ja ne vidim problem. samo klikni na resend i vratićeš se…

http://en.wikipedia.org/wiki/Post/Redirect/Get

http://tools.ietf.org/html/rfc2616#section-13.13

[quote]History mechanisms and caches are different. In particular history
mechanisms SHOULD NOT try to show a semantically transparent view of
the current state of a resource. Rather, a history mechanism is meant
to show exactly what the user saw at the time when the resource was
retrieved.

By default, an expiration time does not apply to history mechanisms.
If the entity is still in storage, a history mechanism SHOULD display
it even if the entity has expired, unless the user has specifically
configured the agent to refresh expired history documents.[/quote]
Drugim riječima, većina modernih web browsera krše RFC. Firefox bi morao prikazati staru verziju stranice klikom na back, a ne nuditi da resubmita formu.

Mislim da je ovo više preporuka (SHOULD NOT) nego zabrana (MUST NOT).

S druge strane, pitanje je da li problem uopšte na web browser strani ili skripa na web serveru (PHP!) vraća HTTP 302 umjesto HTTP 303, tako da browser nema drugog izbora već da ponovo odradi POST.

U svakom slučaju, annoying as hell.

Nebitno je da li vraća 302, 303 ili 200, u RFC-u piše da POST nije cache-able, ali isto tako piše da historija nije cache nego da treba prikazati “ono što je korisnik vidio zadnji put”. Cijela zavrzlama oko post-guard postoji samo zato što je firefox developerima mrsko da stvar urade na naćin kako bi trebali (SHOULD). BTW IE radi korektno, za Chrome i Safari nisam siguran ali čini mi se da generalno webkit ima isti problem kao firefox.

Pogrešno rezonovanje , evo šta kaže isti RFC za HTTP 302 i 303:

http://tools.ietf.org/html/rfc2616#section-10.3.3
http://tools.ietf.org/html/rfc2616#section-10.3.4

“The 303 response MUST NOT be cached”

Nema spominjanja POST-a, historije, should/would, već jednostavno MUST NOT.
Ko hoće da ovo odradi na korektan način treba poslije POST-a vratiti HTTP 303.

Pa, to i jeste problem sto hocu da me vrati nazad bez klikanja…

@Adis: Da ali fino ti piše da historija nije cache, da li je MUST NOT ili nije je nebitno :slight_smile:

[quote=adis]Pogrešno rezonovanje , evo šta kaže isti RFC za HTTP 302 i 303:

http://tools.ietf.org/html/rfc2616#section-10.3.3
http://tools.ietf.org/html/rfc2616#section-10.3.4

“The 303 response MUST NOT be cached”

Nema spominjanja POST-a, historije, should/would, već jednostavno MUST NOT.
Ko hoće da ovo odradi na korektan način treba poslije POST-a vratiti HTTP 303.[/quote]
Procitao sam ovo sto si postavio - ali i dalje ne kontam?!?!? Sta ja tacno treba da uradim?

prema http://en.wikipedia.org/wiki/Post/Redirect/Get sto je Adis postavio (iako je ovo u stvari caka za izbjegavanje “dupliranja” narudzbe), ja bih mogao/trebao da nakon “Submit” pohranim query u $_SESSION ili mysql i onda na sljedecoj stranici run taj query. a kada odaberem osobu i onda kliknem na “Back” query ce se ponovo izvrsiti?

@afan ma samo prepravi taj Advanced Search da umjesto POST koristi GET, nema razloga za POST tu.

mogao bi to biti duuuuuuuug URL :slight_smile:

$_GET umjesto $_POST radi super. Medjutim… Formular je “dinamicki”. Znaci, administrator odabere koja polja ce se pojaviti u formularu Tako da formular nije “hardcoded” nego dinamicki. I da bi radio kako treba ja sam (izgeda mi najlakse i najbolja solucija) za imena promjenljivih koristio “tabela_name.column_name”. Tako da sada kada submit formular sve promjenljive se pojave u URL-u i svakom jako brzo bude jasno kako sam nazv’o tabele i kolone u mysql-u - a to bi ilo jako glupo “exponirati” javno, jel’ tako?

Nema velike razlike da li eksponiraš u GET ili POST varijablama, jedno je vidljivo u URL-u, drugo je vidljivo u HTML source kodu.

Uh! Pa, skroz sam zaborvio na Source :frowning: