Autor | Zpráva | ||
---|---|---|---|
king26 Profil |
#1 · Zasláno: 24. 6. 2008, 20:11:29
Cau, nasel jsem si podminku na kontrolovani e-mailu, aby byl ve spravnem tvaru, jenze jaksi nejde (aspon me ne).
$e_mail_tvar=true; if(!EregI( '^[a-zA-Z0-9_\-\+]+(\.[a-zA-z0-9_\-\+]+)*@[a-zA-Z0-9\-]+(\.[a-zA-Z0-9\ -]+)*\.[a-zA-Z]{2,4} $', $_POST['e_mail'])) $e_mail_tvar=false; A ted otazka, proc to nejde? email jsem mel ve tvaru neco@centrum.cz predem diky za pomoc |
||
ninja Profil |
#2 · Zasláno: 24. 6. 2008, 20:26:02
{2,4} $'
Urcite tam neba byt ta mezere mezi koncem slozenych uvozovek a dolarem... A obecne, na testovani je mozne pouzit www.regexp.cz |
||
king26 Profil |
#3 · Zasláno: 24. 6. 2008, 20:29:26
diky, to byla ta chyba...
|
||
ShiraNai7 Profil |
#4 · Zasláno: 24. 6. 2008, 21:10:19 · Upravil/a: ShiraNai7
Správně by se měly e-mailové adresy validovat takto:
http://www.linuxjournal.com/article/9585 Z toho jsem vytáhl a mírně upravil následující funkci: function _validateEmail($email){ $isValid = true; $atIndex = mb_strrpos($email, "@"); if (is_bool($atIndex) && !$atIndex) { $isValid = false; } else { $domain = mb_substr($email, $atIndex+1); $local = mb_substr($email, 0, $atIndex); $localLen = mb_strlen($local); $domainLen = mb_strlen($domain); if ($localLen < 1 || $localLen > 64) { // local part length exceeded $isValid = false; } else if ($domainLen < 1 || $domainLen > 255) { // domain part length exceeded $isValid = false; } else if ($local[0] == '.' || $local[$localLen-1] == '.') { // local part starts or ends with '.' $isValid = false; } else if (preg_match('/\\.\\./', $local)) { // local part has two consecutive dots $isValid = false; } else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) { // character not valid in domain part $isValid = false; } else if (preg_match('/\\.\\./', $domain)) { // domain part has two consecutive dots $isValid = false; } else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local))) { // character not valid in local part unless // local part is quoted if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local))) { $isValid = false; } } if(function_exists("checkdnsrr")){ if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))) { // domain not found in DNS $isValid = false; } } } return $isValid; } |
||
Časová prodleva: 16 let
|
0