Forum Webscript.Ru

Программирование => PHP => Тема начата: bhor от 19 Ноября 2001, 11:43:29

Название: Проверка поля
Отправлено: bhor от 19 Ноября 2001, 11:43:29
Есть поле. В него народ вводит свое мыло.
Как проверить мыло ли это, а не блаблабла.
Ну чтобы все было блабла@блабла.бла:super:
Название: Проверка поля
Отправлено: Britva от 19 Ноября 2001, 11:46:05

function is_email($string) {
$s = trim(strtolower($string));
return ereg(\'^([a-z0-9_]|\\\\-|\\\\.)+\'.\'@\'.\'(([a-z0-9_]|\\\\-)+\\\\.)+\'.\'[a-z]{2,4}$\', $s);
}
Название: Проверка поля
Отправлено: bhor от 19 Ноября 2001, 11:51:18
Спасибо Britva
очень хорошый функцион однако.
Уже втыкнул в страницу.
Название: Проверка поля
Отправлено: dub от 03 Ноября 2002, 14:50:28
Вот что интересует в этой связи.

Мыло я проверяю в два этапа:
1) регулярным выражением
2) проверяю наличие MX-азписей для данного хоста



function check_email($email) {

# Check address structure
if (!eregi(\'^([a-z0-9_]|\\-|\\.)+@(([a-z0-9]|\\-)+\\.)+[a-z]{2,4}$\', $email))
return false;

# Check DNS
list($user, $host) = split("@", $email, 2);
if (!getmxrr($host, $mxarr))
return false;

return true;
}


Второй пункт пропустит адрес, если указанный хост имеет MX-записи. То есть e-mail типа
shdgj28r3487jhg786@yandex.ru
прокатит, потому что он
а) вполне удовлетворяет регулярному выражению,
б) у яндекса есть MX-записи mx1.yandex.ru и mx2.yandex.ru

А как можно обратиться к этим MXам и "спросить" у них, есть ли у них указанный юзер? Вот это уже была бы полная проверка.
Название: Проверка поля
Отправлено: Mog. от 03 Ноября 2002, 19:54:38
Цитировать
А как можно обратиться к этим MXам и "спросить" у них, есть ли у них указанный юзер? Вот это уже была бы полная проверка.

Вот бы скрипт написать, чтобы он по мылу вычислял номер телефона и звонил туда, проверял правильность ввода инфы в поле, ну или на худой конец, почтовый адрес узнавал и письмо писал настоящее, с просьбой подтвердить правильность мыла :)
Название: Проверка поля
Отправлено: dub от 04 Ноября 2002, 01:00:21
Mog.
На этом самом MXе тоже не живой админ ручками отлупы отправляет о несуществующих адресах, правда ведь?
Название: Проверка поля
Отправлено: Меняздесьдавнонет от 04 Ноября 2002, 02:20:37
dub
ты можешь обратиться через сокет и эмулировать посылку письма.
НО никто тебе не гарантирует, что юзер пользуется этим мейлом.
Никто тебе не гарантирует, что ОК сервера означает наличие такого юзера.
Никто тебе не гарантирует, что диалог с сервером будет происходить БЫСТРО.

мой тебе совет. Если тебе УЖ ТАК УЖ прямо надо проверять валидность мейла, то поступай старым дедовским способом. Отправляй на него письмо со ссылкой, по которой и проверяешь.
Название: Проверка поля
Отправлено: Mog. от 04 Ноября 2002, 08:08:51
Цитировать
dub

Я это вообще к тому, что не стоит, может, так упираться с проверкой валидности мыла, ибо верно говорит RomikChef - никто ничего не гарантирует и поступать надо старым дедовским. А можно после заполнения соответствующих полей показать данные юзеру и попросить проверить, а правильно ли заполнил. Если юзеру надо, он введет правильный мейл, ну а если нет, то все равно обманет.
Название: Проверка поля
Отправлено: dub от 05 Ноября 2002, 11:32:27
RomikChef
Mog.
Согласен.
Конечно, просто послать мейл со ссылкой о подтверждении проще. С точки зрения существования живого юзера.
Но саму по себе задачу проверки существования мыла (согласен, опять же, юзер давно мог забыть об этом мыле или оно вообще может быть чужим - никаких гарантий) интересно было бы решить до конца, то есть именно вступив в диалог с сервером. Просто из любопытства, как это сделать?
Название: Проверка поля
Отправлено: Maniac от 05 Ноября 2002, 18:10:23
Просто из любопытства тебе это никто не скажет. Точнее, почти никто не скажет. В принципе, некоторые серверы при запросе возвращают слова любви о том, что пользователя нет, но не все, далеко не все (скажем, mail.ru молчит, как пленный партизан....). Если интересно вступить в диалог с сервером - fsockopen по 25 порту, MAIL FROM:blabla@bla.ru, RCPT TO:blabla@bla.ru и он тебе скажет ok или не ok по поводу юзера. Опять же, не факт, что это будет правда
Название: Проверка поля
Отправлено: dub от 06 Ноября 2002, 21:20:23
Maniac
Ясно.
All
Спасибо.
Название: Проверка поля
Отправлено: mar от 16 Марта 2003, 00:16:20
а еще все еще бывают на свете uucp-ые адреса. Там уж точно по 25 порту ничего интересного не скажут ;)
Название: Проверка поля
Отправлено: alesh от 06 Июля 2003, 16:17:06
Небольшой скрипт провераяет форму, в том числе на e-mail
http://www.alesh.ru/code/form_check.php