Autor | Zpráva | ||
---|---|---|---|
Mufna Profil |
#1 · Zasláno: 6. 5. 2010, 03:40:54 · Upravil/a: Mufna
Zdravím Vás. Někdo už tady taky řešil problém s tím, že SESSION ve spojení s formulářem mu nefungovala v IE (6, 7 i 8). Mám podobný problém. Mám 2 funkce. První kontroluje povinná pole POST a pokud některé není vyplněno, ukládá do SESSION chybovou hlášku (text). Druhá zobrazuje HTML kód formuláře, ale ještě před tím kontroluje co je v SESSION a pokud je v ní chybová hláška, tak se má vypsat ještě před zobrazením vlastního formuláře. Žádný prohlížeč s tím nemá problémy, a pokud v SESSION je chybová zpráva, tak se i zobrazí. Ale kupodivu v IE se nezobrazí nic. Zkoušel jsem i to, zda nemám chybu jinde (třeba v CSS stylopisu - používám tam nějaký záporný margin), ale tam chyba určitě není. Fakt netuším, čím by to mohlo být. Můžete mi někdo poradit co s tím, aby se mi chybové hlášky zobrazovaly i v IE ?
první funkce (pouze kontroluje vyplnění polí) obsahuje mj. toto: $_SESSION["post_error"] = ""; if (!$_POST["name"]) $_SESSION["post_error"][0] = $error_msg[0]; if (!$_POST["email"]) $_SESSION["post_error"][1] = $error_msg[1]; if (!$_POST["txt"]) $_SESSION["post_error"][2] = $error_msg[2]; return $_SESSION["post_error"]; druhá funkce (vypisuje případné chybové hlášky + zobrazuje formulář if ($_SESSION["post_error"][0] != "") echo $_SESSION["post_error"][0]; if ($_SESSION["post_error"][1] != "") echo $_SESSION["post_error"][1]; if ($_SESSION["post_error"][2] != "") echo $_SESSION["post_error"][2]; // zkusil jsem var_dump , vypíše to vždy NULL var_dump($SESSION["post_error"]); v index.php se pak logicky nejprve volá první funkce (kontrola), poté druhá, která zobrazuje formulář |
||
mckay Profil |
#2 · Zasláno: 6. 5. 2010, 05:56:49
Mufna:
var_dump($_SESSION["post_error"]); |
||
Chamurappi Profil |
#3 · Zasláno: 6. 5. 2010, 09:16:05
Reaguji na mckaye:
Tahle věc může způsobit rozdíl mezi prohlížeči? Reaguji na Mufnu: „První kontroluje povinná pole POST a pokud některé není vyplněno, ukládá do SESSION chybovou hlášku (text).“ V té bude nejspíš chyba. Zmínil jsi ji tady celou? Nemáš ji náhodou v nějaké špatně napsané podmínce? (Něco na způsob téhle?) |
||
Mufna Profil |
#4 · Zasláno: 6. 5. 2010, 13:37:18 · Upravil/a: Mufna
mckay
jo, jasně, tam mám chybu, dík. Ale celkově to neřeší můj problém Chamurappi funkce pro kontrolu function check_form() { $_SESSION["post_error"] = ""; require_once("form_msg.php"); if (isset($_POST["send"])) { if ($_POST["send"] == 1) { // * kontrola - pouze vyplneni nebo nevyplneni povinnych poli if (!$_POST["name"]) $_SESSION["post_error"][0] = $error_msg[0]; if (!$_POST["email"]) $_SESSION["post_error"][1] = $error_msg[1]; if (!$_POST["txt"]) $_SESSION["post_error"][2] = $error_msg[2]; } } return $_SESSION["post_error"]; } HTML kód formuláře a odesílacího tlačítka vypadá takhle: <form action="/poptavkovy-formular/" method="POST"> <button type="submit" name="send" id="send" value="1">odeslat poptávku</button> </form> EDIT: var_dump( $_SESSION["post_error"]) už vypisuje správné řetězce podle toho, které pole formuláře není vyplněno, takže toto funguje. EDIT1: Ale vypisuje to správně všude kromě IE ! Tam zůstává pole $_SESSION["post_error"] pořád prázdné, i když nejsou vyplněna některá povinná pole formuláře a tudíž by v poli $_SESSION["post_error"] měly být prvky s řetězci znaků chybových hlášek. Takže to chápu tak, že IE s tím formulářem nakládá nějak jinak než ostatní prohlížeče. Co s tím ? EDIT2: vypsal jsem si i var_dump( $_POST) - a tam to vypadá všude stejně, t.j. správně podle toho co je a co není vyplněno. Tak už fakt nevím ... |
||
Mufna Profil |
#5 · Zasláno: 6. 5. 2010, 14:09:26
Tak já už to vidím. Všechny prohlížeče u odesílacího tlačítka vypisují jeho hodnotu - value="1" - ale IE tam vypisuje text buttonu, tedy v mém případě "odeslat poptávku"
|
||
Chamurappi Profil |
#6 · Zasláno: 6. 5. 2010, 14:12:05 · Upravil/a: Chamurappi
Reaguji na Mufnu:
„vypsal jsem si i var_dump( $_POST) - a tam to vypadá všude stejně“ Nevypadá. „IE s tím formulářem nakládá nějak jinak než ostatní prohlížeče. Co s tím ?“ Nepoužívej <button> , nebo alespoň neočekávej, že se pošle jeho value . To je ta druhá věc, která jde na formulářích zvorat :-)
Explorer posílá obsah <button> u, nikoliv value .
Edit: Pozdě. |
||
Mufna Profil |
#7 · Zasláno: 6. 5. 2010, 14:23:19
Chamurappi
To je ta druhá věc, která jde na formulářích zvorat A která je první ? |
||
Chamurappi Profil |
#8 · Zasláno: 6. 5. 2010, 14:30:54
Reaguji na Mufnu:
Ta, na kterou jsem odkázal v příspěvku [#3] — špatné očekávání u obrázkového <input> u.
|
||
Mufna Profil |
#9 · Zasláno: 6. 5. 2010, 14:38:04
Chamurappi
aha, ok |
||
Časová prodleva: 14 let
|
0