Доброго времени суток! Вопрос очень прост: preg_match или FILTER_VALIDATE? Не так давно поспорил с товарищем... У себя на сайте использую FILTER_VALIDATE (сылка, строка и т.д.) проблем не возникало. Но товарищ обошел эту защиту. FILTER_VALIDATE лучше не использовать? Выскажите свое мнение, пожалуйста.
Расскажи, как он обошёл. Вангую, что он сделал какой-либо финт, который валидатор в принципе не должен обрабатывать, а твоему другу кажется, что должен. Даже есть подозрение, что это касается FILTER_VALIDATE_EMAIL
Да PHP: $login1 = filter_input(INPUT_POST, 'reg_login', FILTER_SANITIZE_STRING); $optionsLogin = array( 'options' => array( 'regexp' => '/^[a-zA-Z0-9]{5,20}/' ) ); $login = filter_var($login1, FILTER_VALIDATE_REGEXP, $optionsLogin); Мне тоже интересно, он не колется. Намекает на filter_var($url, FILTER_VALIDATE_URL)
Нужен конкретный пример, потому что foo@bar это валидный email и будет работать, но валидацию большинства сайтов он пройдет. Потому:
Как минимум первые пять символов строки должны быть цифрой или латинской буквой, а дальше в строке может быть абсолютно любое количество любых символов т.к. в шаблоне нет $
Просто это два отдельных понятия. Использование подготовленных выражений - защита от sql-инъекций, использование htmlspecialchars при выводе - защита от XSS, а валидация e-mail - это валидация e-mail, оно не защищает, оно просто проверяет введённую информацию на соответствие правилам