Autor Zpráva
xlifer
Profil
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
No nevím ale když posílám něco přes funkci POST nebo GET tak mám toto :

$_POST["pole1"]
Já tam nemám uvozvoky

A kde máš definovoanou $chyba?
joe
Profil
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
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
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
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
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
Moc nerozumím tomu, co píšeš.
Dej si za <?php řádek
var_dump($_POST);
a hned uvidíš, co máš v poli POST.
xlifer
Profil
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
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
_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
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
Tori:

V tom případě by to muselo dělat vždy a každému, což se neděje.

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: