В этой статье я хочу рассказать, как
на PHP можно реализовать
проверку E-mail на предмет
существования. Хочу сразу
предупредить,
что ни о каких регулярных
выражениях, которые проверяют
только
правильность синтаксиса введеного
адреса, не будет и речи.
О такой проверке только ленивый не
писал :-)
Я хочу описать способ более точной
проверки введенного адреса
в форму, которая основана на
проверке информации об обменах
хостов.
Итак приступим к делу.
Допустим у нас есть форма, в которую
посетитель сайта должен ввести свой
E-mail,
чтобы в будущем получать новости:
<form action="check_email.php"
method="post">
Введите ваш E-mail<input type="text"
name="email" size="12">
<input type="submit" value="Жми!">
</form>
В файле-обработчике формы - 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<count($mxhostsarr); $i++):
{
echo
$mxhostsarr[$i]."<br>";
}
Дествующий пример можно посмотреть
здесь:
http://www.pocherk.ru/price.html
Вот собственно и все.
В конце хочу отметить, что основой
для этой статьи послужил пример из
книги:
Л.Томсон, Л.Веллинг "Разработка Web-приложений
на PHP и MySQL", изд. DiaSoft, 2001
Удачи вам!
----------------------
Чернухин Евгений (Pocherk)
web-pocherk@mail.ru
http://www.pocherk.ru