Autor Zpráva
quatzael
Profil
Z jednoho scriptu odesílám formulář do jiného a v něm mám dělám kontrolu, jestli byl správně uploadován soubor z tohoto formuláře. Když soubor není uploadován, tak tam mám pomocí header 307 přesměrování zpátky na původní script s formulářem. Jenže proměnná $_POST se nějak nezachová. Přesměruje mě to, ale proměnná $_POST už není. Když ale refreshnu stránku tak se najednou zase objeví..

Nevíte někdo náhodou co s tím může být a proč ten $_POST nefunguje "napoprvé"..?
quatzael
Profil
Asi bude řešení nějak pomocí funkce header_remove(), protože tu stránku je potřeba refreshovat, aby se načetly ty hodnoty $_POST..
Ale týhle funkci bohužel vůbec nerozumím. Opravdu nikdo nevíte jak to vyřešit?


Když na tý inkriminovaný stránce (tu, kterou musím refreshovat, aby se mi načetly hodnoty $_POST) zadám:
var_dump(headers_list());

tak mi vyleze:
array(3) { [0]=> string(38) "Expires: Thu, 19 Nov 1981 08:52:00 GMT" [1]=> string(77) "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" [2]=> string(16) "Pragma: no-cache" } 

asi se tam musí něco přenastavit, ale já opravdu nevím..
Davex
Profil
Po přesměrování prohlížeč nikdy znovu neposílá POST data. Cílová adresa se vždy načítá metodou GET.

Kontrola by se měla udělat jinak (třeba ve skriptu s formulářem) nebo se musí vyplněné hodnoty schovat třeba $_SESSION.
quatzael
Profil
Davex:
Po přesměrování prohlížeč nikdy znovu neposílá POST data.
No ale k čemu je potom ta 307?
Ale máš pravdu, že s tím $_SESSION by to taky šlo vyřešit..
Tak to asi tak udělám.,
Ale je to divný, protože všude jinde mi to funguje, jen tady ne.,
Davex
Profil
quatzael:
No ale k čemu je potom ta 307?
Jo aha, tak 307 by fungovat mělo. Nemáš chybu v tom přesměrování a opravdu se posílá stavový kód 307?
quatzael
Profil
Davex:
No tak několikrát jsem to kontroloval, opravdu nevím.. Patlám se tím už druhej den..
Zkusil jsem to přesměrovať na úplně novou stránku, prakticky prázdnou a efekt je furt stejnej:
Přesměruje, $_POST je prázdnej, refreshnu a hodnoty v $_POST najednou existujou..
Při refreshi se to tradičně ptá jestli chci znovu načíst hodnoty (teda aspoň v IE to tak tradičně je)
Davex
Profil
Vypadá to na zajímavou vlastnost Internet Exploreru, že po odeslání formuláře s atributem enctype="multipart/form-data" zahodí POST data při přesměrování kódem 307 a cíl stahuje metodou GET.
quatzael
Profil
Davex:
A jak jsi na to přišel, že to konkrétně dělá jen Internet Explorer, taky jsi to zkoušel?
Mě podobný přeposílání na jiných scriptech běží i na IE..
Jen tenhle se chová strašně záhadně.. Možná je to tím, že tam zároveň uploaduju ten soubor..
No tak asi to budu muset vyřešit tím §_SESSION, když to nejde normálně..
Davex
Profil
Zkoušel jsem to ještě ve Firefoxu a Chrome, ale pouze Explorer změnil chování v závislosti na výskytu atributu s hodnotou enctype="multipart/form-data".

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: