В этой статье я хочу рассказать, как на PHP можно реализовать проверку E-mail на предмет существования. Хочу сразу предупредить, что ни о каких регулярных выражениях, которые проверяют только правильность синтаксиса введеного адреса, не будет и речи. О такой проверке только ленивый не писал :-) Я хочу описать способ более точной проверки введенного адреса в форму, которая основана на проверке информации об обменах хостов. Итак приступим к делу. Допустим у нас есть форма, в которую посетитель сайта должен ввести свой E-mail, чтобы в будущем получать новости: текстовое поле и submit; В файле-обработчике формы - check_email.php, производим следующие мероприятия: 1. Разбиваем введенный адрес на имя пользователя и имя хоста (для адреса tabyretkin@bla-bla.ru: tabyretkin - это пользователь bla-bla.ru - это хост) $email_arr = explode("@" , $email); $emailhost = $email_arr[1]; 2. Далее следует "гвоздь программы" - функция getmxrr(), которая возвращает набор записей MX (Mail Exchange - почтового обмена). MX-запись содержится в DNS. if (!getmxrr($emailhost, $mxhostsarr)): { echo "На адрес $email нельзя отправить почту!"; exit; } 3. При желании можно выдать список хостов, через которые возможна отправка писем. Этот список находится в массиве $mxhostsarr echo "На $email возможна отправка писем через следующие хосты: "; for ($i=0; $i { echo $mxhostsarr[$i]." "; } Дествующий пример можно посмотреть здесь: http://www.pocherk.ru/price.html Вот собственно и все. В конце хочу отметить, что основой для этой статьи послужил пример из книги: Л.Томсон, Л.Веллинг "Разработка Web-приложений на PHP и MySQL", изд. DiaSoft, 2001 Удачи вам!
|