Валидация данных в PHP при помощи filter_var
11 февраля 2009
Основой безопасности любого приложения является простое правило: «пришедшим от пользователя данным доверять нельзя». Для этой цели пишется довольно большое количество кода, хотя типичные задачи можно решить стандартными средствами PHP ничего не изобретая.
Например, таким образом можно проверить адрес e-mail при помощи filter_var:
if (filter_var($user_email, FILTER_VALIDATE_EMAIL)) { // правильный }
также можно убрать лишнее, например, из URL:
$sanitized_url = filter_var($url, FILTER_SANITIZE_URL);
Хотя filter_var() есть в стандартном PHP начиная с версии 5.2.0, документация на него, особенно русская, хромает.
Нормальная документация и примеры:
— Input Validation: Using filter_var() Over Regular Expressions.
Комментарии RSS по email OK
Спасибо за интересную находку, впервые слышу об этой функции, пошел изучать мануалы…
Во многих дистрибутивах Linux ещё до версии 5.2 не добрались, поэтому пока рановато.
Еще бы знать, как она там внутри все это проверяет... Если теми же регэкспами, то наверное лучше свои использовать - гибче однако. Хотя наверняка эта функция пошустрее будет
Можно спросить, оно проверяет просто формат мейла или существует ли он реально?
2Леонард:
Судя по названию функции filter_VAR, она проверяет только прогоняет переменную через указанных "фильтр" и говорит, прошло или нет :) Проверка существования имейла это совершенно другая история.
Чего ж тогда ее родимую в Zend_Validate не используют? :)
не гуд
string(28) "[email protected]"
Почему не гуд? Вполне может быть. Особенно, если мыло внутреннее корпоративное, а домен comzsdsadfsdfsd.
По поводу документации это да, я искал очень долго хоть чтото про filter_var, чтобы корректо его использовать - спасибо вам - нашел.
echo filter_var('1@1', FILTER_VALIDATE_EMAI) - говорит что мыло верное ;(
echo filter_var('-1@1', FILTER_VALIDATE_EMAI) - говорит что мыло верное ;(
echo filter_var('_1@1', FILTER_VALIDATE_EMAI) - говорит что мыло верное ;(
mihdan, у меня эти мыла не пропускает, версия PHP 5.3.
Да, filter_var очень полезная функция, но жаль что очень загадочная.
P.S. ссылка Data Filtering Using PHP's Filter Functions - битая!
** Алексей Качаев ** спасибо КЭП.
по сабжу самый кал оказался когда быстрой альтернативы для РНР < 5.2 не нашел :(
FILTER_SANITIZE_URL что с урлом делает, расписали бы поподробнее. А так же хотелось бы узнать и про остальные ключи функции если они есть. Спасибо.
Bacifer, вроде в посте есть ссылка на полное описание.
Спасибо за полное описание а то на php.net нет ни чего!
http://www.codeharmony.ru/materials/17
Век живи - век учись. Спасибо за заметку. Навела на определенные мысли.
Тоже недавно узнал о ней!