| Autor | Zpráva | ||
|---|---|---|---|
| quatzael Profil |
#1 · Zasláno: 13. 4. 2014, 03:15:04
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 |
#2 · Zasláno: 13. 4. 2014, 15:06:34 · Upravil/a: quatzael
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 |
#3 · Zasláno: 13. 4. 2014, 17:27:12
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 |
#4 · Zasláno: 13. 4. 2014, 18:07:04
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 |
#5 · Zasláno: 13. 4. 2014, 18:22:01
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 |
#6 · Zasláno: 13. 4. 2014, 18:31:43
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 |
#7 · Zasláno: 13. 4. 2014, 19:49:39
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 |
#8 · Zasláno: 13. 4. 2014, 22:44:59
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 |
#9 · Zasláno: 13. 4. 2014, 22:56:55
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".
|
||
|
Časová prodleva: 12 let
|
|||
0