Рубрики

Опросец

Добавляете ли Вы свой блог в рейтинги?

View Results

Loading ... Loading ...

Реклама на сайте

Баннеры

Участник Blograte.ru Участник планеты Developers.org.ua
Форум блоггеров
Каталог "Тематических Блогов Рунета"

Валидация данных без регулярных выражений на примере проверки email адреса

Любой разработчик сталкивается с созданием форм, а вместе с этим приходит и необходимость проверять введенные пользователем данные. Ближайший пример - комментарии внизу этого поста. Раньше для проверки валидности, например, email использовалось регулярное выражение типа этого:

"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$"

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

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

Как пример приведу такой небольшой тест:

var_dump(filter_var('aravak@example.by', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('ar avak@example.by', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('a.ravak@example.example2.by', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('a-ravak@example.example2.by', FILTER_VALIDATE_EMAIL));

var_dump(filter_var('www.example.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));

Данные, которые вернет скрипт будут следующими:

string(17) "aravak@example.by"
bool(false)
string(27) "a.ravak@example.example2.by"
string(27) "a-ravak@example.example2.by"
bool(false)
string(18) "http://example.com"

Как Вы уже успели заметить - функция возвращает false если данные кривые или значение после проверки.
Я рассказал только о мелких возможностях данной функции, на самом деле они гораздо шире: можно проверять числа на определенный промежуток значений, указывать какие данные возвращать в случае неудачной проверки. Последнее может пригодиться для проверки форм, которые заполнять необязательно. Кстати, это все уже было мной когда-то реализовано, теперь я думаю переписать свой класс валидатора для ускорения работы проектов.
Надеюсь, данный пример поможет в особенности новичкам, ибо проверка данных дело непростое, но крайне важное.

Ах да, чуть не забыл, если вам нужно убедиться что email хотя бы теоретически реальный, советую воспользоваться функцией checkdnsrr.

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

[Post to Twitter] Не жадничай, твитни пост, поделись с друзьями 

Похожие записи

Comments are closed.