Autor Zpráva
nightrider
Profil
Zdravim, na předchozim foru jsem řešil nefunkční kontrolu, ale ted by jsem chtěl spíš řešit kontrolu polí. Bylo mi řečeno, že programatoři nedělají pro každé pole ověření a tak se chci zeptat jak to tedy programátoři dělají? Taky by jsem se chtěl zeptat co je na tomhle špatně?

if (eregi("^[[:alnum:]][0-9]{0,5}$",stripslashes(trim($_POST['telz'])))) { // Jen nevim proč je tohle špatně
if (eregi("^[[:alnum:]][0-9]{1,5}$",stripslashes(trim($_POST['telz'])))) { // Změnil jsem jen počet povolených znaků a jede to jak má

Ví někdo kde mám chybu? Potřebuju aby to pustilo pouze čísla a to i pouhy 1. Děkuju
Jan Tvrdík
Profil
nightrider:
Proč myslíš, že první zápis je chybný? Co očekáváš, že bude dělat a nedělá?
Nox
Profil
Stačí
if( preg_match("/^\d+$/", trim($_POST["telz"]) ) ){...


Pokud má projít i prázdný řetězec, tak místo + dát *
Teoreticky by tam nemusel být ani ten trim
Joker
Profil
nightrider:
Kontrola polí“: Kdo je osel, ať se přihlásí na místním úřadě :-)

Bylo mi řečeno, že programatoři nedělají pro každé pole ověření
Tohle nevím jak je myšlené. programátoři by měli kontrolovat každé pole, které může potenciálně způsobit nějakou neplechu, což je skoro každé.
Ne vždy je ale nutná zrovna takováhle kontrola.

Například pokud v tom poli má být číslo, pro některé případy by stačilo něco jako:
$hodnota = intval($_POST["hodnota"]);
...a dále pracuju se $hodnota. Když mi zlý hacker pošle nějaký záludný vstup, může docílit maximálně toho, že v $hodnota bude nula.
nightrider
Profil
První kontrola vyhazuje chyby. Nevím proč, ale jakmile 0 nahradím 1, tak všechno jede jen už uživate musí vypsat 00 na místo 0 a záludný je taky to, že pustí b,ale pokud se napíše třeba bb, tak to už dál nepustí.
nightrider
Profil
Vše vyřešeno :-) Děkuju za rady
Toto téma je uzamčeno. Odpověď nelze zaslat.