Autor Zpráva
quatzael
Profil
Internet Explorer nějak zahazuje POST. Přitom se jedná o klasický jednoduchý formulář odesílaný přímo na finální stránku. Žádný přesměrování tam není..
Ostatní prohlížeče jsou v tomhle ok.
lionel messi
Profil
quatzael:
Přitom se jedná o klasický jednoduchý formulář odesílaný přímo na finální stránku.
Ukážeš nám kód?

Krištáľovú guľu nemám, ale toto nepomôže? Formuláře a IE (chyba při kontrole POST)
quatzael
Profil
lionel messi:
Krištáľovú guľu nemám, ale toto nepomôže? Formuláře a IE (chyba při kontrole POST)
Tohle tam teda zrovna nemám. Ale někde jinde isset takhle používám a paradoxně je to tam bez problému..


lionel messi:
Navíc tohle ztratí opravdu celou proměnnou POST..
jenikkozak
Profil
Hlavně sem nepřidávej žádný skript! Je naprosto běžné, že v prohlížeče zahazují data z formulářů.

Tipnu si: při odesílání formuláře jsi neklikl na odesílací tlačítko (proto Explorer neodeslal jeho hodnotu), ale na straně serveru testuješ jeho existenci. Netrefil jsem se? Běda, jestli přidáš nějaký skript! Ostatní chtějí také hádat.
weroro
Profil
jenikkozak:
Ja som to skôr pochopil tak, že po správnom odoslaní formulára stlačím F5 a ten istý formulár sa odošle znovu. Niektoré prehliadače ma upozornia pred refreshom na fakt, že dáta budú znovu odoslané a či chcem pokračovať. To že by mi nejaký prehliadač (FF, O, IE, CH), zahodil premenné sa mi ešte nestalo.
quatzael
Profil
jenikkozak:
Běda, jestli přidáš nějaký skript! Ostatní chtějí také hádat.
Haha.. Ale dostal jsi mě.. Fakt nevím jestli to myslíš jen ironicky nebo ne..:o)

při odesílání formuláře jsi neklikl na odesílací tlačítko (proto Explorer neodeslal jeho hodnotu), ale na straně serveru testuješ jeho existenci.
No úplně nevím jak to myslíš. Pomocí javascriptu? Normálně klikám na odesílací tlačítko.
Mám tam úplně jednoduše tohle:

 <form accept-charset="UTF-8" method="post" action="/podslozka/dalsi-podslozka/index.php">
 <input type="hidden" name="url" value="/podslozka/dalsi-podslozka/confirm.php">
 <input type="hidden" name="id" value="125468">
 <input type="submit" value="Upravit"></form>

a klikám přímo na submit..


weroro:
Je to tak. Když odešlu formulář, normálně najede stránka s proměnnými POST. Potom refreshnu, objeví se tohle:

kliknu na "Opakovat" a najede stránka bez POST proměnných
quatzael
Profil
jenikkozak, weroro:
Teď jsem zjistil, že se takhle nechová jen jeden formulář, ale celej můj web a taky zřejmě všechny jiný weby.
Ale jenom v IE. Nevíte co by s tím mohlo být?? Nemůže být třeba příčinou někde něco v nastavení prohlížeče? Že by se tam něco záhadně přepsalo..?
To je divný..
_es
Profil
quatzael:
Vyrob „živú“ ukážku, kde sa ten problém jasne prejaví. Toto je len tipovanie naslepo toho, kde asi inde bude chyba - inde, než si uviedol.
quatzael
Profil
_es:
No tak jsem vytvořil živou ukázku tady, ale ta najednou funguje..

Zkusil jsem teda na mých stránkách vytvořit úplně bokem tuhle ukázku a ta funguje. Ale když jsem zkusil odeslat stejný formulář na ukázkový script: confirm.php z mý stránky, kde jsem původně odesílal ten problémový formulář tak to nefunguje..

Takže problém je už někde ve scriptu, který odesílá formulář.. Ale vůbec mě nenapadá kde..
quatzael
Profil
_es:
Zkusil jsem teda na mých stránkách vytvořit úplně bokem tuhle ukázku a ta funguje.
tak houby, beru zpět. Nefunguje.. Prve se mi zdálo, že to funguje nebo to možná chvíli fungovalo, ale teď zas ne..
_es
Profil
quatzael:
V IE8 to žiadnu hlášku nevypisuje, ani po stlačení tlačítka odoslania, ani pri prechádzaní tlačítkami prehliadača „dopredu“a „dozadu“. Že ti to „nejde v IE“, je tiež dosť neurčité, zišlo by sa uviesť aspoň verziu. Píšeš niečo o nejakom „refreshi“, síce nerozumiem prečo a na čo, upozornenie po stlačení tlačidla obnovenia po načítaní výstupu confirm.php, že ide o dotaz POST, zahlási IE, Firefox aj Chrome, Opera nie, no neviem, či potom tie dáta naozaj odošle.
quatzael
Profil
_es:
Prostě i když tam dám úplně ten nejosekanější kód bez jakýchkoli headerů, čistě jen tohle, tak to prostě furt zlobí:
index.php:
 <form accept-charset="UTF-8" method="post" action="/confirm.php">
 <input type="hidden" name="id" value="125468">
 <input type="submit" value="Odeslat"></form>

confirm.php:
<div>POST: <?php echo $_POST['id'] ?></div>

Tak musí být asi něco špatně na straně serveru, ne?
_es
Profil
quatzael:
to prostě furt zlobí:
Definuj „zlobí“. Po stlačení tlačidla „Odeslat“ Ti to otvorí novú stránku - výstup z confirm.php, kde je POST: 125468. Čo iné by to malo robiť?
Fisir
Profil
quatzael má pravdu. Pokud si zkusíte v Exploreru (já jsem to testoval v jedenáctce) odeslat živou ukázku a poté už odeslanou obnovit, objeví se znovu formulář (tudíž se neodeslala POST data).

Tak to bude zajímavější. Dělá to jen jedna záložka ze dvou. Aha, tak to se evidentně projevuje jen pokud na formulář přijdu manuálním vepsáním URL adresy, pokud kliknete na odkaz z diskuse, je to v pořádku.
_es
Profil
Fisir:
já jsem to testoval v jedenáctce
To je asi dosť podstatná informácia, ktorú mal dodať quatzael. To bude asi nejaký IE zlepšovák, asi to má nejaký rozumný zmysel, keďže z adresového riadka návštevníkovi POST odkazy odosielať nejdú. No vlastne to funguje podobne ako v iných prehliadačoch, len sa namiesto potvrdenia dialógového okna prehliadača potvrdí nové odoslanie POST dotazu v pôvodnej stránke.
quatzael
Profil
_es:
Definuj ‚zlobí‘. Po stlačení tlačidla ‚Odeslat‘ Ti to otvorí novú stránku - výstup z confirm.php, kde je POST: 125468. Čo iné by to malo robiť?
Vždyť jsem to tady psal. Data se normálně odešlou. Zlobí = po refreshi stránky zmizí...


Fisir, _es:
Mě nejde teď ani o to, že se tam furt při refreshi objevuje tohle:


Mě jde o to, že ten prohlížeč ty data z POST úplně zahodí. Celou proměnnou..

Prostě odešlu formulář a objeví se mi:
POST: 125468

Refreshnu a je tam jenom:
POST:

Prostě celá proměnná POST se smaže, neuchová, zapomene nevím jako to mám už líp napsat, aby jste mi rozuměli..


No a teď mi to už nefunguje ani tady na tý živý ukázce. Přitom včera to tam ještě fungovalo..

Tak já nevím, je problém jenom u mě nebo to máte taky?


Fisir:
Pokud si zkusíte v Exploreru (já jsem to testoval v jedenáctce) odeslat živou ukázku a poté už odeslanou obnovit
Ty to máš trochu jinak, posíláš data na stejnou stránku, kde je formulář..

Aha, tak to se evidentně projevuje jen pokud na formulář přijdu manuálním vepsáním URL adresy, pokud kliknete na odkaz z diskuse, je to v pořádku.
Já i když klikám na odkaz z diskuze tak to po refreshi vrací zpátky na formulář..


_es:
To bude asi nejaký IE zlepšovák, asi to má nejaký rozumný zmysel
Ale já už IE11 používám snad víc jak rok a nikdy to takhle neblblo.. Ani si nevybavuju, že bych teď stahoval nějaký aktualizace..
Fisir
Profil
Reaguji na quatzaela:
Ty to máš trochu jinak, posíláš data na stejnou stránku, kde je formulář
Ale chová se to stejně. Když POST data existují, zobrazí to číslo, když ne, zobrazí to formulář. V podstatě je to to samé, co máš ty, ale bez potřeby dalšího souboru.

Já i když klikám na odkaz z diskuze tak to po refreshi vrací zpátky na formulář
Když vyzkouším tu tvou živou ukázku, funguje tak, jak jsem popsal tu svou. Pokud její adresu vepíšu do adresního řádku sám, odešlu a stránku obnovím (přičemž kliknu na Opakovat), data se ztratí. Pokud ale kliknu na odkaz v diskusi, data i po obnovení zůstanou.

Mimochodem, doporučuji si vzít nějakou pilulku na ten tečkový průjem.
_es
Profil
Fisir:
Pokud její adresu vepíšu do adresního řádku sám, odešlu a stránku obnovím (přičemž kliknu na Opakovat), data se ztratí.
No tak ale keď vypíšeš do adresového riadku nejakú adresu, tak je snáď logické, že nastane GET dotaz a nie POST dotaz (s dátami skadiaľ?).

quatzael [#16]:
Akosi nerozumiem, prečo chceš stále z nejakého dôvodu „refreshovať“ výsledok POST dotazu. Lepší zmysel má asi obnovovať niečo definovateľné len pomocou URL, teda GET dotaz.
quatzael
Profil
Fisir:
Když POST data existují, zobrazí to číslo, když ne, zobrazí to formulář.
Tohle já chápu. Ale v tomto případě kdy se řeší takový záhadný chování IE, může každá odlišnost vést k jinému výsledku.

Mimochodem, doporučuji si vzít nějakou pilulku na ten tečkový průjem.
Sorry..

_es:
Akosi nerozumiem, prečo chceš stále z nejakého dôvodu ‚refreshovať‘ výsledok POST dotazu.
To tak smysl to určitě má, aby se uchovaly proměnné v POST i po refreshi stránky. Já mám formulář, který se skládá z více kroků (stránek) a když by si uživatel něco refreshnul ve třetím kroku tak ho to vrátí úplně na začátek. To přece nejde.
Ale vždyť to přece vždycky fungovalo. Do včerejška mi to všude fungovalo tak jako v jiných prohlížečích, kde to pořád ještě funguje.

_es:
A nedalo by se to vyřešit nějakým header(něco)? To přece umí ovlivňovat takový věci.
Fisir
Profil
Reaguji na _es:
keď vypíšeš do adresového riadku nejakú adresu, tak je snáď logické, že nastane GET dotaz a nie POST dotaz
Asi jsem to špatně vysvětlil. Mám dvě situace:
1.) kliknu zde v diskusi na odkaz » kliknu na odesílací tlačítko formuláře » obnovím stránku s výsledky (v dialogu stisknu Opakovat) » data zůstala zachovaná
2.) vepíšu adresu formuláře do adresního řádku » kliknu na odesílací tlačítko formuláře » obnovím stránku s výsledky (v dialogu stisknu Opakovat) » data zmizela
quatzael
Profil
Fisir:
Asi jsem to špatně vysvětlil.
Já jsem Tě pochopil dobře. A tohle se mi zdá jako naprosto crazy chování prohlížeče.
Tak ale kde je teda chyba? Můžou za to nějaké nové aktualizace?

_es:
Akosi nerozumiem, prečo chceš stále z nejakého dôvodu ‚refreshovať‘ výsledok POST dotazu.
Nejde přece o mě. Jde přece o uživatele, kteří nebudou tušit, že když si refreshnou stránku, že se jim všechno ztratí.
Já bych čekal, že standard bude, že ty data tam zůstanou po refreshi, tak jak to vždycky fungovalo.
Fisir
Profil
Reaguji na quatzaela:
Já jsem Tě pochopil dobře.
Já vím, reagoval jsem na _esa.

A tohle se mi zdá jako naprosto crazy chování prohlížeče. Tak ale kde je teda chyba? Můžou za to nějaké nové aktualizace?
Co s tím, nevím. Zkus to nahlásit jako chybu.
quatzael
Profil
Fisir:
1.) kliknu zde v diskusi na odkaz » kliknu na odesílací tlačítko formuláře » obnovím stránku s výsledky (v dialogu stisknu Opakovat) » data zůstala zachovaná
2.) vepíšu adresu formuláře do adresního řádku » kliknu na odesílací tlačítko formuláře » obnovím stránku s výsledky (v dialogu stisknu Opakovat) » data zmizela

Tak teď se mi to začalo chovat přesně jako Tobě. Přitom před chvílí se ty data v obou případech ztrácela.
Davex
Profil
Vypadá to jako chyba Exploreru 11. Při obnově POST data odešle, ale jaksi zapomene poslat hlavičku Content-Type: application/x-www-form-urlencoded, takže PHP nevyplní pole $_POST.

Ta data se dají získat nějak takto:

if (empty($_POST) && $_SERVER["REQUEST_METHOD"] == "POST" && empty($_SERVER["CONTENT_TYPE"])) {
  parse_str(file_get_contents("php://input"), $_POST);
}
var_dump($_POST);
quatzael
Profil
Davex:
Supr, tohle opravdu funguje. Díky moc!!

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: