Проверка правильности ввода email
Воскресенье, 15 марта 2009 г.
Рубрика: Программирование
Метки: php | программирование | сайт
Просмотров: 3037
Подписаться на комментарии по RSS
Рубрика: Программирование
Метки: php | программирование | сайт
Просмотров: 3037
Подписаться на комментарии по RSS
Делал регистрацию на сайте littown.ru, понадобилось устроить проверку правильности ввода email. Не стал заморачиваться с этим на javascript, решил сделать проверку на стороне сервера. Стал копать и обнаружил одну интересную вещь.
Оказывается, стопроцентно проверить правильность email можно только послав на него письмо. Ну, собственно, настолько серьезную проверку мне делать было не надо, потому я решил ограничиться проверкой почтового домена и правильности написания email.
Для проверки правильности написания легко использовать регулярные выражения. А для проверки домена в php существует функция getmxrr. Вкратце — она проверяет наличие MX-записей в DNS для указанного сервера. Таким образом, если MX-записи есть, значит, почтовый сервер в email указан верно.Таким образом родилась функция:
function checkemail($email) {
// Проверка на правильность ввода
$res=(!eregi("^[\._A-Za-z0-9-]+@[\.A-Za-z0-9-]+\.[a-z]{2,6}$", $email));
// Проверка на наличие MX-записей
list($mailbox, $domain)=split("@",$email);
if(@getmxrr($domain, $mxhost)) { $res=true; } else { $res=false; }
return $res;
}





Комментариев: 5
Классно. Работает. Спасибо!
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {true}else{false}Так разве не проще ?!
Доменная часть адреса может содержать не только имя домена, но и имя хоста!
...и, если не ошибаюсь, ip-адрес: user@[192.168.0.2]
Устаревшие функции, если вы перепишете на новые preg_ цены вам не будет.