Проверка введённого e-mail

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
1345

Уважаемые PHP программисты.

Когда в вашу голову приходит замечательная идея реализовать проверку введённого мыльника, ДЫК будьте добры сделайте эту проверку по человечески.

Прохожусь по базе каталогов и 25% сайтов мне выдают ошибку, при введении мыльника xxx-xxx@mail.ru

Прошу вас учитывайте спец.знаки при написании скрипта. Заранее благодарю.

Сам использую вот такой строкой:

preg_match("/^[a-z0-9_.-]{1,20}@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/is",$mail))

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
topy
На сайте с 28.03.2006
Offline
142
#1

А я рекомендую просто проверять существование MX-записи на mail-хосте и если она существует, то мыло есть, если нет, то просить ввести правильное мыло.

Самое успешное - это совмещение регулярки и проверки MX.

Но конечно же это не мешает ввести чужое мыло.

Новости коротко и ясно (https://subnews.ru)
stealthy
На сайте с 15.06.2006
Offline
69
#2

ТС, есть подозрение что ваш regexp малость кривоват. Почему вдруг имя почтового ящика у вас ограничено 20 символами? Есть масса длинных имен и фамилий, которые в корпоративных ящиках будут употреблены через точку, типа konstantin.mikhnerovich@bla.bla.com

А вообще, парсинг email адресов на регекспах соответственно RFC задача непростая. На perl есть классический пример, где эта задача решается регулярным выражением длиной в страницу или даже больше.

Вот поиск по сети дал оптимизированный результат: http://examples.oreilly.com/regex/email-opt.pl

Проверка через MX в большинстве случаев намного более сложно реализуется чем какой-нибудь тупой яваскрипт валидатор, и при этом избыточна для задачи. Учитывая кривизну настроек у огромного количества почтовиков для реальной жизни IMHO такая проверка кроме усложнения жизни пользователям сервиса мало что даст.

Twilight CMS (http://www.twl.ru): есть Free версия, очень проста и удобна в использовании. Консультирую по любым вопросам. Новый спорт - практическая стрельба (http://nikit.in) - не для офисного планктона.
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#3

stealthy хм, да вы правы, мой пример тоже не универсальный.

А примера на PHP нет случаем?

Ayavryk
На сайте с 11.10.2003
Offline
209
#4
LEOnidUKG:
stealthy хм, да вы правы, мой пример тоже не универсальный.

Приготовьте успокаивающее или графинчик водки с малосольным огучиком. Сядьте покрепче в кресло. Если вы верующий - прочитайте молитву.

А теперь откройте Mail::RFC822::Address: regexp-based address validation

Тынгыр, мынгыр, комсомол (http://erum.ru). Ехари, ехари, (жалобно) аяврик. /народная тунгусская песня/
stealthy
На сайте с 15.06.2006
Offline
69
#5
LEOnidUKG:
А примера на PHP нет случаем?

Ну, вообще-то сами регекспы в пределах приведенных примеров одинаковый синтаксис имеют, что на перле, что на PHP.

Ayavryk:
А теперь откройте Mail::RFC822::Address: regexp-based address validation

Это че-то не то. Оно конечно большое и "внушает", но там же просто тупо повторяется кусок один, столько раз сколько по RFC максимальная глубина поддоменов бывает.

У о'рейли в книге где то был поприкольнее примерчик.

LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#6

Прочитал много способов, по проверке и понял одно. Она не нужна. Да да, создание такой проверки ошибочно по своей природе!

Если человек хочет, чтобы ему ответили, он введёт свой реальный мыльник т.к. он его знает наизусть и ему не нужна никакая проверка от компьютера т.к. ОН ЕГО ЗНАЕТ и ОН ЕМУ НУЖЕН.

Если человек флудит, то он просто введёт левый правильный мыльник и будет довольным и скрипт его не остановит т.к. скрипт не умеет читать мысли!

Всем спасибо! Я так сказать просветился. Пошёл убирать эту не нужную проверку.

D
На сайте с 10.10.2005
Offline
28
#7
stealthy:
Проверка через MX в большинстве случаев намного более сложно реализуется чем какой-нибудь тупой яваскрипт валидатор, и при этом избыточна для задачи. Учитывая кривизну настроек у огромного количества почтовиков для реальной жизни IMHO такая проверка кроме усложнения жизни пользователям сервиса мало что даст.

Нормально все будет проверяться.....

Этапы проверки...

1.Проверяем есть ли вобще домен...а то есть любители вводить user@site.local

2.Проверяем на MX запись или на A запись....

Я не SEO я программист PERL (Apache 1.3.37 + mod_perl)!!!!! А ещё я люблю FastCGI
I
На сайте с 22.12.2006
Offline
33
Ink
#8
stealthy:
На perl есть классический пример, где эта задача решается регулярным выражением длиной в страницу или даже больше.

Это выражение решает задачу в общем случае, когда в адрес входит имя и комментарий, типа:

Vasya Pupkin (Roga-Kopyta LLC) vaysa@roga-kopyta.ru

Но в данном случае этот ужас не нужен. К тому же многие частные случаи можно отбросить -- когда вы в последний раз видели почтовые адреса с доставкой через UUCP?

Oniks
На сайте с 22.08.2005
Offline
176
#9
LEOnidUKG:
Она не нужна

Вот она, истина! Точно так же, как не нужно вводить емаил дважды (я вот всегда копирую первое написание во второе через буфер). :)

Профессиональные услуги фотографа в Москве и области (http://www.oniks-photo.ru/) покупаю стать и ссылки с сайтов про охоту

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий