проверить валидность email php

Проверка правильности email на PHP

Проверка правильного формата вводимых данных очень важна в любых информационных системах. В данной статье, мы рассмотрим возможности PHP проверить, корректно ли указан адрес электронной почты (email). Обращу внимание, что речь идет лишь о проверке корректной структуры адреса. Дело в том, что адрес, может либо быть корректным (т.е. валидным), но при этом не существовать. Например, пользователь может просто ошибиться символом при вводе. Поэтому задача данной статьи – отсеять заведомо некорректные значения для email.

Как известно email состоит из двух основных частей. Например, адрес: MyEmail@myssite.ru.

Здесь, MyEmail – это непосредственный адрес (или логин) пользователя, а myssite.ru – адрес сайта, которому соответствует электронная почта.

Следовательно, проверка адреса на валидность заключается в том, что он должен соответствовать структуре:

В итоге, задача сводилась к построению регулярного выражения для проверки, соответствует ли проверяемая стока допустимым символам и структуре email. Но, начиная с PHP 5.2, появилась возможность выполнить эту проверку встроенной функцией filter_var(). Пример такой проверки:

В первый параметр функции указывается строковое значение, которое нужно проверить. Второй параметр – это идентификатор применяемого фильтра (в данном случае для проверки email). Функция filter_var() универсальна и может быть использована для проверки различных значений – числовое значение, логическое или проверка валидности IP-адреса.

Валидация email с использованием регулярного выражения PHP

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

Если используете подобное регулярное выражение, стоит быть внимательным к возможным адресам. Например, в данный код решит, что введенное значение не email, если доменная зона будет более 5 символов или если адрес будет задан кириллицей. Поэтому, применяя его, учитывайте возможные вводимые значения.

Источник

Проверить валидность email php

Проверять данные обработчиком на стороне сервера всегда полезно, а в некоторых случаях жизненно необходимо, так как это поможет избежать множество проблем в будущем. В данном случае я расскажу как нужно правильно делать проверку e-mail на валидность (правильность) при помощи PHP. Я расскажу 2 способа, один из которых уже устарел, а второй относительно недавно начал использоваться многими php программистами. Начнем по порядку с устаревшего.

Устаревший способ проверки валидности email на PHP при помощи регулярных выражений

И начну я с описание с того, как именно этот способ проверяет емейл и почему его сейчас лучше не использовать.

Как же он проверяет почту? А делается это примерно вот так:

Где проверяется с помощью регулярного выражения, соответствует ли содержимое переменной $email шаблону email’а вида «СИМВОЛЫ@СИМВОЛЫ.ДОМЕН».

Почему его лучше не использовать сейчас? Главный минус этой регулярки в том, что её нужно постоянно корректировать в соответствии с изменениями в названиях email. Самый яркий пример этого: домены с русскими именами, например в зоне «.рф». Регулярное выражение выше уже не пропустит емейл типа виталик@почта.рф, так как там забито условие a-z0-9_.- (самое обширное), то есть правильными будут признаны только те названия почт, которые будут содержать английские символы, цифры, земля, точка и пробел. Все остальные будут отсеяны как не правильные.

В общем я бы советовал использовать проверку регуляркой только тем, кто понимает, что она делает и хочет получить какой-то частный результат.

Новый способ проверки правильности e-mail на PHP при помощи базовой функции языка

Я советую использовать вам именно этот способ, так как единожды поставив такую проверку в код, в будущем вы будете уверены, что она работает как нужно. Разработчики языка PHP сами внесут нужные корректировки в новых версиях.

Источник

Проверка Email на валидность и существование.

Данная форма позволяет проверить Email на формальную валидность и существование на почтовом сервере.

Как проверяется email адрес

Проверка синтаксиса

При запросе подтверждения адреса электронной почты в первую очередь будет выполннена проверка синтаксиса электронной почты, т.е. проверено его соответствие правилам регулярных выражений, таким как:

Доменная часть email должна соответствовать строгим правилам: она должна соответствовать требованиям к имени хоста, состоящему из букв, цифр, дефисов и точек. Кроме того, доменная часть может быть литералом IP-адреса, заключенным в квадратные скобки, хотя это крайне редко встречается.

Проверка доступности почтового сервера

Проверяется доступность MX-записи почтового сервера с помощью DNS-запроса.

Проверка самого ящика на сервере (проверить по SMTP)

Для этого сервис устанавливает соединение с почтовым сервером получателя и отправляет ему команды по аналогии с отправкой письма. Если на сервере нет такого получателя, то при отправке команды «письмо для такого-то мыла»(RCPT TO:) сервер отвечает что такого ящика нет(код 550). Не все сервера отвечают согласно требованиям RFC, например сервера mail.ru на любое письмо отвечает кодом 250, что всё Ok.

Если включена проверка по SMTP: списывается два запроса, адреса в результирующем файле будут упорядочены по smtp-серверам

С примером установления соединения и отправки команд можете ознакомиться здесь. Время проверки каждого е-mail может занимать до 60 секунд.

Некоторые почтовые сервера для защиты от спама используют технологию серых списков (Greylisting). При отправке письма сервер отвечает кодом 450 или 451, что он временно не готов принять письмо. В этом случае необходимо повторно проверить почтовый адрес более чем через 30 минут. При разовой проверке и проверке по API повторный запрос не отправляется. При пакетной обработке файла система будет ждать 30+ минут и повторно опрашивать почтовый сервер. Время обработки файла с почтовыми адресами в этом случе существенно возрастает. Дополнительная оплата при пакетной обработке за повторную проверку не взимается.

Почтовый сервер mail.ru (inbox.ru, bk.ru, list.ru) на любой адрес отвечает, что такой получатель есть и принимают для него полностью письмо. И только потом присылают FBL письмо, что такого адреса не существует. Вам нужно сделать почтовый ящик для таких писем прописать его в mail.ru и обрабатывать отписку для таких адресов.

Пример проверки Email на валидность

Данный пример при выходе из поля проверяет корректность заполнения поля е-mail.

Внимание! Использовать этот пример можно только из приватных сетей, т.к. он использует API_KEY на стороне клиента.

Исходный код этого примера:

Api проверки Email на валидность

format_valid = false
error = ‘Неверный символ в e-mail!’

mx_found = false
error = ‘Email сервер не существует!’

Если сервер защищен с помощью технологии серых списков, будет возвращено:
gray_listing=true
Для получения достоверного результата необходимо вызвать API повторно через час-полтора.

Если все проверки пройдены, возвращается:
message = ’email валидный’

Примеры API запросов проверки email

Пример запроса в формате json: https://htmlweb.ru/json/service/email?email=kdg@a12sd.ru

Пример запроса: https://htmlweb.ru/json/service/email?email=kdg@gmail.com

Пример запроса: https://htmlweb.ru/json/service/email?email=kdg22@htmlweb.ru&smtp_check

Команды SMTP сервера

SMTP (Simple Mail Transfer Protocol — простой протокол передачи почты) — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. ESMTP (англ. Extended SMTP) — масштабируемое расширение протокола SMTP. В настоящее время под «протоколом SMTP», как правило, подразумевают ESMTP и его расширения. SMTP использует порт Порты TCP 25.

Протокол SMTP (RFC 821) использует простые текстовые команды в формате ASCII и возвращает трехзначные кодированные ответы с текстовыми сообщениями.

Формат команд в SMTP прост: command [parameter], где command — четырехсимвольная команда протокола SMTP, а parameter — необязательный параметр, определяющий тип данных в команде.

Купить скрипт проверки email адресов

На написание этого скрипта ушло меньше часа времени, а на его отладку я потратил больше месяца. Неоднократно я получал бан от почтовых серверов и потом вытаскивал свой ip из бана. Если Вы не хотите пройти через все злоключения, Вы можете приобрести скрипт проверки почтовых адресов за 8000 рублей (

110$). Код скрипта реализован на PHP, полностью открытый и не использует никаких дополнительных библиотек. Скрипт НЕ будет работать на виртуальном хостинге с закрытым портом SMTP.

Источник

Проверяем e-mail на валидность на PHP/jQuery

Сегодня я хотел бы поговорить с вами немного о валидности. Что это такое? Это проверка введенной информации согласно какому-либо шаблону, маске. Все мы знаем, что мобильный телефон для России начинается с +7, а e-mail должен содержать в себе знак @.

Если какое-то из условий не выполнено, то логично уведомить об этом пользователя, чтобы в последующем не получить от него ошибочных данных. Сегодня я покажу вам, как двумя способами проверить корректность введенной электронной почты пользователя.

Проверка валидности e-mail на PHP

Итак, мы полагаем, что в какую-то переменную нам поступает e-mail пользователя. Наша задача – проверить ее корректность, и если в адресе имеется ошибка – сообщить пользователю об этом.

Соответственно, если e-mail некорректен, вы можете вывести необходимое сообщение и остановить дальнейшее выполнение скрипта (в нашем случае – отправку) до тех пор, пока не будет указан правильный e-mail.

Проверка валидности e-mail на jQuery

Поскольку jQuery – клиентский скрипт (то есть выполняется на стороне пользователя), то здесь мы рассмотрим live-пример, где при введении e-mail в некоторое поле будет мобильно происходить проверка его на корректность.

У нас есть поле для ввода e-mail:

Теперь напишем небольшой скрипт, который будет проверять корректность заполненного поля после того, как оно потеряло фокус:

По желанию, в случае некорректного ввода можно вывести необходимое сообщение или, например, заблокировать кнопку формы.

Источник

PHP Формы — Проверка имени, E-mail и URL

В данной статье, мы рассмотрим возможности PHP проверить, корректно ли в форме указан адрес электронной почты (email), имя пользователя и URL-адрес.

Проверка валидности имени на PHP

Но что если нужно, чтобы имя было ТОЛЬКО на латинице или ТОЛЬКО на кирилице и ограничить длину до 30 символов? Например, для полных имён типа «Максим Максимов-Суханов» или «Maxim Maximov-Sukhanov», естественно только на одном из языков регулярное выражение примет следующий вид (бонусом можно писать украинские имена):

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

Примечание: Не забывайте про букву «Ё», которая не входит в диапазон «А-Я» и её нужно указывать отдельно!

Проверка правильности email на PHP

Как известно email состоит из двух основных частей — username@hostname. Локальная часть email-адреса — это то, что перед знаком «@»(ASCII-код 64), а часть после знака — это домен получателя. Локальная часть может иметь длину до 64 символов, а имя домена может содержать не более 253 символов.

Реализуем проверку email разложив её на сосотавляющие, алгоритм которых следует предписаниям стандарта RFC 2822:

Данная регулярка удобна тем, что шаблоны для разных частей формата email-адреса объявляются отдельно. Валидацию пройдут email не только с буквенными именами почтового домена, но и почтовым сервером, представленным в виде ip адреса.

Главный минус этой регулярного выражения в том, что его нужно постоянно корректировать в соответствие изменениям в названиях email-адресов. Например, домены с русскими именами в зоне «.рф» регулярка выше уже не пропустит.

Рекомендуем использовать именно этот способ проверки email-адреса, так как сегодня и в будущем вы будете уверены, что она работает как нужно. Разработчики языка PHP сами внесут нужные корректировки в новых версиях.

Проверка URL-адреса в PHP

Проверка имени, email и URL-адреса в PHP

Объединим все рассмотренные выше все проверки полей ввода в одной форме и напишем следующий код:

Пример

Вы можете попытаться ввести корректные и некорректные данные в представленной выше форме и посмотреть работу, написанного в этом уроке, сценария PHP.

В следующем уроке мы выведем введенные пользователем данные на экран.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *