Autor | Zpráva | ||
---|---|---|---|
xlifer Profil |
#1 · Zasláno: 18. 4. 2011, 15:42:24 · Upravil/a: xlifer
Nevím kam přesně tento problém zařadit, tak snad to bude sedět do PHP ve kterém se vše odehrává...
Z nepochopitelných důvodů se mi stává, že při odeslání formuláře z webu metodou POST někdy přijdou "prázdné" údaje i když byly vyplněné... (situace se stává velmi vyjímečně a většinou u stejného uživatele). Je možné, že příčinou může být v PC daného uživatele instalovan nějaký Firewall nebo Antivir s takovým nastavením zabezpečení, že údaje z formuláře se přenáší, ale po cestě při komunikaci se smažou nebo vynulujou nebo jak bych to správně definoval ? Navíc před samotným zpracováním formuláře mám vždy kontrolu, zda jsou vyplněné údaje, resp. zda nebyly zadané prázdné pole. Obecně standard jak se to běžné dělá všude. Otázkou tedy je proč k takové situaci dochází... vůbec to z programátorského hlediska nechápu. Stručný příklad: <form action="zpracuj.php" method="post" name="formular"> <input type="text" name="pole1" ...> <input type="text" name="pole2" ...> <input type="text" name="pole3" ...> <input type="submit" name="poslat" value="odeslat"> </form> zpracuj.php <?php if ($_POST["pole1"] == "" OR $_POST["pole2"] == "" OR $_POST["pole3"] == "") { echo "Povinne pole nejsou vyplnene."; $chyba = true; } if (!Isset($chyba)) { // ?? zde jsou již údaje prázdné i přes to, že projde podmínka ?? } ?> |
||
l564 Profil |
#2 · Zasláno: 18. 4. 2011, 16:32:02 · Upravil/a: l564
A kde máš definovoanou $chyba? |
||
joe Profil |
#3 · Zasláno: 18. 4. 2011, 16:35:21 · Upravil/a: joe
xlifer:
„if (!Isset($chyba))“ Proč tam máš ten vykřičník? Podmínka znamená, že pokd není nastavena proměnná $chyba. A proč tam máš to velké I? Je to název třídy? |
||
xlifer Profil |
#4 · Zasláno: 18. 4. 2011, 16:36:28
l564:
Tomu nerozumím co je na tom jinak než co jsem uvedl já? pro POST: $_POST["pole1"]; pro GET: $_GET["pole1"]; Ale co to řeší ke zmíněnému problému??? |
||
xlifer Profil |
#5 · Zasláno: 18. 4. 2011, 16:39:54 · Upravil/a: xlifer
joe:
Vykřičník je tam špatně, napsal jsem to narychlo pouze jako příklad, takže správně bez vykřičníku, tedy jeli proměnná chyba nastavena... Jinak bych neřešil jestli je velké nebo malé "I" v isset, když to nemá vliv na funkčnost... |
||
joe Profil |
#6 · Zasláno: 18. 4. 2011, 16:43:54
xlifer:
„Jinak bych neřešil jestli je velké nebo malé "I" v isset, když to nemá vliv na funkčnost“ Vliv to nemá, PHP není case sensitive, ale píše se to tak, podobně jako v jiných jazycích. „Vykřičník je tam špatně, napsal jsem to narychlo pouze jako příklad, takže správně bez vykřičníku“ Takže už to "funguje"? |
||
xlifer Profil |
#7 · Zasláno: 18. 4. 2011, 16:59:46 · Upravil/a: xlifer
joe:
„Vykřičník je tam špatně, napsal jsem to narychlo pouze jako příklad, takže správně bez vykřičníku“ Takže už to "funguje"? Nefunguje, protože vykřičník nebyla vůbec podstata popisovaného problému :-) Jedná se o to, že odeslané pole se jeví po podmínce jako prázdné i když byly uživatelem zadané, jak jsem psal... nevím jestli byl přispěvek pochopen správně? |
||
joe Profil |
#8 · Zasláno: 18. 4. 2011, 17:03:36
Moc nerozumím tomu, co píšeš.
Dej si za <?php řádek var_dump($_POST); |
||
xlifer Profil |
#9 · Zasláno: 18. 4. 2011, 17:20:51
joe:
Ano, rozumím, ale jak tohle zachytit, když nějaký neznámý uživatel odešle z webu formulář, který přijde jakoby prázdný, ale přitom údaje vyplnil... Takže řeším, resp. zjištuji zda na takové chování může mít vliv jak jsem psal nějaké nastavení firewallu či podobné zabezpečení v PC, které by dokázalo nějak vyprázdnit data při zpracování? Zpracované údaje si ukládám do souboru na server, ale v souboru je také prázdno, zkrátka jakoby udaje nebyly vyplněné... ale projdou podmínkou, že jsou zadané. |
||
_es Profil |
#10 · Zasláno: 18. 4. 2011, 17:24:57
xlifer:
„který přijde jakoby prázdný, ale přitom údaje vyplnil“ Akým spôsobom overuješ, že užívateľ údaje vyplnil? Ak prídu na server nevyplnené, tak ich snáď nevyplnil, či nie? |
||
xlifer Profil |
#11 · Zasláno: 18. 4. 2011, 18:41:44
_es:
No píšeš to správně, pokud přijdou na server, tak jsou vyplněné, ale záhada právě je, že jakákoliv další prace s těmito údaji vložení do DB, odeslání v email zprávě nebo uložení do souboru, tak na všech místech zpracování se uloží jako prázdné proměnné, zkrátka odeslaná jako vyplněné, ale při zpracovaní vynulované... Je to záhada, ale právě se snažím přijít na to proč. |
||
Tori Profil |
#12 · Zasláno: 18. 4. 2011, 19:32:19
xlifer:
„na všech místech zpracování se uloží jako prázdné proměnné“ Není pak chyba při nějakém dalším zpracování? Anebo nepracuje nějaká funkce referencí přímo s $_POST (např.zrušení automatického escapování), kdy by mohla přepsat všechny hodnoty v poli prázdným řetězcem? |
||
xlifer Profil |
#13 · Zasláno: 18. 4. 2011, 19:54:16
Tori:
V tom případě by to muselo dělat vždy a každému, což se neděje. |
||
Časová prodleva: 13 let
|
0