В этом уроке я Вам покажу, как проверить, является ли действительным электронный адрес. Когда Вы регистрируетесь на сайте, обычно идет проверка электронного адреса, который Вы ввели в соответствующее поле. Это можно сделать с помощью регулярных выражений. Нам нужно только проверить совпадает ли введенный электронный адрес с регулярными выражениями.
ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$]", $email);
В этот момент проверяется только строка, но не выводит ошибку. Так что в следующим действием нам нужно сделать вывод ошибки. Если строка не совпадает с регулярными выражениями, то возвращается логическое значение.
if (eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$]", $email)) { return FALSE; }
Это основные методы проверки. Но иногда пользователи пишут вроде правильно, например, 123@123.123. Такого адреса не существует. И для этого мы будем проверять имя домена после @ на реальность ввода доменного имени. Делаем проверку на существование MX записи для этого домена, а затем проверяем, если порт 25 закрыт – это нам гарантирует, что домен используеться.
list($Username, $Domain) = split("@",$email); if(getmxrr($Domain, $MXHost)) { return TRUE; } else { if(fsockopen($Domain, 25, $errno, $errstr, 30)) { return TRUE; } else { return FALSE; } }
Для облечения работы, последние два выражение запишем в виде функции. После создания функции, мы можем ее использовать снова и снова.
function checkEmail($email) { if(eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$]",$email)) { return FALSE; } list($Username, $Domain) = split("@",$email); if(getmxrr($Domain, $MXHost)) { return TRUE; } else { if(fsockopen($Domain, 25, $errno, $errstr, 30)) { return TRUE; } else { return FALSE; } } }
Теперь все, что нам требуется, это проверить наш код. Для этого пропишем маленький код. Когда Вы хотите сделать проверку электронного адреса, просо введите электронный адрес, как значение функции.
if(checkEmail(johndoe@example.com) == FALSE) { echo "E-mail адрес не правильный."; } else { echo "E-mail адрес правильный."; }
Вот и все! Пользуйтесь!