Записки Лешего

О жизни, линуксе и всяком разном

Цитата из Библии: Если я скажу нечестивому: „Ты непременно умрёшь“, а ты не будешь предостерегать его и не будешь ничего говорить, чтобы предостеречь нечестивого от его злого пути, чтобы спасти ему жизнь, то он, будучи нечестивым, умрёт в своём беззаконии, но за его кровь я взыщу с тебя. (Иезекииль 3:18)

Проверка правильности ввода email

Воскресенье, 15 марта 2009 г.
Рубрика: Программирование
Метки: | |
Просмотров: 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;
}
google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Комментариев: 5

  1. 2010-04-19 в 17:44:00 | Sandro (анонимно)

    Классно. Работает. Спасибо!

  2. 2011-05-12 в 17:54:10 | Gomer (анонимно)
    if(filter_var($email, FILTER_VALIDATE_EMAIL))
    {true}else{false}

    Так разве не проще ?!

  3. 2011-09-01 в 17:25:56 | Digi (анонимно)
    Таким образом, если MX-записи есть, значит, почтовый сервер в email указан верно.

    Доменная часть адреса может содержать не только имя домена, но и имя хоста!

  4. 2011-09-01 в 17:34:13 | Digi (анонимно)

    ...и, если не ошибаюсь, ip-адрес: user@[192.168.0.2]

  5. 2012-01-27 в 18:36:52 | wartur (анонимно)

    Устаревшие функции, если вы перепишете на новые preg_ цены вам не будет.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)