| |
|
|
| | Функция mail() отправляет по указанному адресу сообщение, а как можно организовать в PHP проверку "реальности" введенного пользователем e-mail, не отправляя ничего на этот адрес, так как в случае неверно указанного адреса, хост-провайдер высылает отчеты об ошибках, а этого не хочется. | |
| |
|
|
| |
|
|
| |
для: sim5
(23.01.2007 в 08:45)
| | | С помощью регулярных выражений.
Допустим, в переменной $mail находится адрес ящика, тогда:
<?
if (preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $mail))
{
//отправляем
}
else
{
//не отправляем
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: Гончий пёс
(23.01.2007 в 09:45)
| | | это проверка синтаксиса адреса, а не его реальности, т.е. существования. можно влепить любой адрес вроде: eee@uuu.oo и он пройдет эту проверку. на самом же деле такого адреса и даже сервера нет и ответ с ошибкой все равно придет. проверку на существование почтового сервера и адреса на этом сервере тут приводили. правда, у меня она очень медленно работает...
самый лучший способ иметь реальные e-mail'ы - требовать от юзеров подтверждения регистрации. тот, кто дал несуществующий адрес, никогда не получит активационнный линк. | |
| |
|
|
| |
|
|
| |
для: elenaki
(23.01.2007 в 09:53)
| | | >проверку на существование почтового сервера и адреса на этом сервере тут приводили. правда, у меня она очень медленно работает...
Киньте, пожалуйста, ссылку на нее или код | |
| |
|
|
|
| |
|
|
| |
для: elenaki
(23.01.2007 в 09:53)
| | | Ну дык об том и речь! Пущай вводят что хотят... Как говорится, ври, да не завирайся=) Но на случай, если юзер добросовестный, и действительно случайно ошибся очень пойдет...
Кстати, не спорю, проверять существование самого ящика очень даже надо... А то я не знаю сколько писем ушло в космос, пока я регился со сломанной клавой, где хреново работала одна клавиша, которая была адресе моего ящика=) | |
| |
|
|
| |
|
|
| |
для: Гончий пёс
(23.01.2007 в 10:49)
| | | Я поставил этот вопрос потому, что наши пользователи в основном женщины, и часто просто по невнимательности пишут, например, вместо rambler, ramdler. Нужно проверить реальность адреса, и не "выбрасывать" пользователя куда-то на иную страницу, а указать на ошибку и предложить исправить ее. Для нас "реальность" e-mail очень важна. | |
| |
|
|
| |
|
|
| |
для: sim5
(23.01.2007 в 11:24)
| | | Боюсь, единственное что можно сделать - проверять существование введенного сервера после собаки. И все.
Существование конкретного ящика никто проверить не даст. | |
| |
|
|
| |
|
|
| |
для: Richard Ferlow
(23.01.2007 в 11:48)
| | | Опять облом! | |
| |
|
|
| |
|
|
| |
для: Richard Ferlow
(23.01.2007 в 11:48)
| | | >Существование конкретного ящика никто проверить не даст.
Не говорите ерунду.
elenaki привела ссылку на тему, где описывалась методика проверки адреса на реальность полностью. Вкратце: нужно выполнить сокращенный smtp-обмен без отправки письма:
HELO host
MAIL FROM: my_addr
RCPT TO: target_addr
QUIT
И проанализировать ответы сервера. | |
| |
|
|
| |
|
|
| |
для: Trianon
(23.01.2007 в 12:31)
| | | Я читал этот пост, но в нем rambler занесен в список "глючных" серверов. Автор обещал выложить новую версии кода, но пока ее не видно. Остается надеятся и ждать. | |
| |
|
|
| |
|
|
| |
для: sim5
(23.01.2007 в 12:40)
| | | Никакой он не глючный.
Нужно просто честно выполнять шаги протокола smtp. И автор об этом в курсе. | |
| |
|
|
| |
|
|
| |
для: Trianon
(23.01.2007 в 15:19)
| | | Благодарю, в таком случае попробуем. | |
| |
|
|
| |
|
|
| |
для: sim5
(23.01.2007 в 15:23)
| | | В коде автора есть ошибка не существенная - лишняя скобка, а вот существенное неудобство - как же на локальной машине проверить работу скрипта, используя этот код. Если я создам файл, например test.php, в котором размещу эту функцию, этот файл размещу на существующий в сети сайт и буду подключать его в скрипте на локалке? В отзывах об этом коде упоминается, что он медленно работает - настолько, что отладка скрипта превратиться в муку? | |
| |
|
|
| |
|
|
| |
для: sim5
(23.01.2007 в 18:31)
| | | Есть добрые люди, встроили код, добавили функцию, для проверки передаю свой реальный адрес. Ответ получаем в файл. Запускаем в сети - ответ:
Warning: fsockopen() [function.fsockopen]: unable to connect to mxs.mail.ru:25 (Permission denied) in
/domain/test.php on line 96. Это строка:
$Connect=fsockopen($connect_host, 25);
Человек он хоть и добрый, но больше не разрешит воспользоваться своим ресурсом. Прошу ответь, как все должно быть, без подводных камней - у меня нет возможности тестить это до выявления всех ньюансов. Что - сокеты, адреса, просить о чем-то хостера, ошибка кода? | |
| |
|
|
| |
|
|
| |
для: sim5
(24.01.2007 в 05:24)
| | | Фраза "Permission denied" означает, что у скрипта не достаточно прав доступа для осуществления операции. Так бывает, когда хостер запрещает обращение к чужим ресурсам со своего хоста через сокеты. | |
| |
|
|
| |
|
|
| |
для: cheops
(24.01.2007 в 13:15)
| | | Значит использовать это http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=12785&page=1 можно, только договорившись с хостером. Видимо придется довольствоваться "виртуальным" адресом. | |
| |
|
|