Autor Zpráva
gogy27
Profil
Mám menši problém.
Nasledujúci kód mi aj napriek správne zadanému e-mailu vyhodi chybnú hlášku: zle zadaný e-mail:

$email = htmlspecialchars(addslashes($_POST["email"]));

if (!ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]",$email)) { $chyby.="Nesprávne vyplnený e-mail<br>"; }

Môže byť chybou práve tie funkcie: htmlspecialchars respektíve addslashes (používam ich samozrejme na ochranu proti sql útokom.
ATi
Profil *
if (!preg_match( '/^[A-Z0-9._-]+@[A-Z0-9][A-Z0-9.-]{0,61}[A-Z0-9]\.[A-Z.]{2,6}$/i' , $adresa)) { echo "Email nemá správný tvar!"; }
else { //Tady pokracuje kdyz je email OK }
peta
Profil
gogy27:
$email = $_POST["email"];
echo '<br>BEGIN'.$email.'END';
$email = addslashes($email);
echo '<br>BEGIN'.$email.'END';
$email = htmlspecialchars($email);
echo '<br>BEGIN'.$email.'END';
Co vypisou ty echa? Neuvedl jsi totiz, co je podle tebe spravne napsany mail. Takze, kdyz nevime, co do scriptu posilas za text, tak nelze rici, co vyplivne ta funkce.

A tak jeste muzes zkusit primy test, bez tech funkci, kdyz myslis, ze na to maji vliv.
$email = $_POST["email"];
if (!ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]",$email)) { $chyby.="Nesprávne vyplnený e-mail<br>"; }

Jeste ti popisi vyraz, pro pochopeni, co se v nem deje. Lomitko v druhe sade znaku pred minus jen rika, ze to ma byt minus pro reg. vyraz. totez v posledni sade.

^ zacatek
[a-zA-Z0-9_]+ opakovani znaku v zavorce, 1 az n
@ zavinac
[a-zA-Z0-9\-]+ opakovani znaku v zavorce, 1 az n
\. tecka
[a-zA-Z0-9\-\.]+ opakovani znaku v zavorce, 1 az n
$ konec

"a@a.aa" platny
" a@a.aa" neplatny, vyresila by funkce trim()
"a@a.aa " neplatny, vyresila by funkce trim()
"peter.mlich@a.aa " neplatny, obsahuje tecku, znak, ktery neni uvedeny v sade znaku pred zavinacem (podobne prvni 2 pripady, obsahuji mezeru, ta take neni v sade pred a v druhem pripade v sade po zavinaci)
Str4wberry
Profil
Môže byť chybou práve tie funkcie: htmlspecialchars respektíve addslashes (používam ich samozrejme na ochranu proti sql útokom.

První funkce ovlivňuje znaky <, >, & a ", druhá zase \, " a '. Takže to asi problém nebude, zkus si najít jiný regulární výraz pro kontrolu e-mailu.

Funkce htmlspecialchars, mimochodem, není ochrana před sql útokom.
gogy27
Profil
Dakujem za vysvetlenie :)

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:

0