Advertisement
  1. Code
  2. PHP

Проверка данных с помощью PHP фильтров

Scroll to top
Read Time: 8 min

Russian (Pусский) translation by Anna Goorikova (you can also view the original English article)

Валидация данных является неотъемлемой частью работы с формами. Не только недопустимые отправленные данные могут привести к проблемам безопасности, но также могут сломать вашу веб-страницу. Сегодня мы рассмотрим, как удалить недопустимые символы и проверить данные с помощью функции «filter_var».


Посмотрите приведенный ниже пример . Пользователь ввел текст "I don't have one" в качестве домашней страницы. Если эти данные должны были быть введены в базу данных, а затем получены в качестве ссылки, ссылка будет нарушена.

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

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

Есть очевидные проблемы с перечисленным выше:

  • Это занимает много времени.
  • Существует очень высокая вероятность ошибки.

К счастью, начиная с версии 5.2, PHP включил отличную функцию, называемую filter_var, которая устраняет трудности проверки данных.

filter_var в действии

filter_var будет делать, оба действия, и санитизировать и проверять данные. В чем разница между ними?

  • Санитизация удалит из данных какой-либо некорректный символ.
  • Проверка будет определять, находятся ли данные в надлежащей форме.

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

Как использовать filter_var

Использование filter_var невероятно просто. Это просто функция PHP, которая принимает две части данных:

  • Переменную, которую вы хотите проверить
  • Тип проверки для использования

Например, приведенный ниже код удалит все теги HTML из строки:

Вот еще один пример - на этот раз сложнее. Приведенный ниже код гарантирует, что значение переменной является допустимым IP-адресом:

Вот так просто использовать filter_var. Полный список всех правил, которые вы можете использовать, смотрите в конце этого руководства.

Пример санитизации

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

Используя константы FILTER_SANITIZE_EMAIL и FILTER_SANITIZE_URL, определенные PHP, функция знает, какие символы являются некорректными.

Пример валидации

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

Чтобы обеспечить правильное форматирование данных, их необходимо проверить.

Теперь, когда данные были проверены, вы можете быть уверены, что представленная информация - именно то, что вы ищете.

Все вместе: Форма отправки электронной почты

Теперь, когда данные очистки и проверки были рассмотрены, мы будем использовать эти навыки для быстрой отправки электронной почты. Это ни в коем случае не будет иметь качества готового продукта - например, никакая форма не должна требовать домашней страницы, но она будет работать идеально для этого урока. Форма будет содержать 4 части информации:

  • Name
  • Email Address
  • Home Page
  • Message

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

Шаг 1 - Создание формы

Для первого шага просто создайте элемент формы с 5 полями: для перечисленных выше и кнопки отправки:

Шаг 2 - Определение, была ли форма передана

Вы можете проверить, была ли отправлена форма, если была установлена кнопка «Submit». Поместите следующий код над вашей формой:

Шаг 3 - Проверка поля имени и сообщения

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

Затем очистите их, используя константу FILTER_SANITIZE_STRING

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

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

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

Шаг 4 - Проверка поля электронной почты

Поле электронной почты будет очищено и проверено так же, как это было ранее в уроке.

Во-первых, убедитесь, что оно не пустое:

Далее, очистите его:

Наконец, подтвердите его как истинный адрес электронной почты:

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

Шаг 5 - Проверка поля домашней страницы

Опять же, поле домашней страницы будет очищено и проверено так же, как ранее в уроке.

Во-первых, убедитесь, что оно не пустое:

Затем, санитизируйте его и удалите любые неразрешенные символы:

Наконец, проверьте его, чтобы убедиться, что это истинный URL:

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

Шаг 6 - Проверка на наличие ошибок и отправка сообщения

Теперь, когда мы проверили все поля, пришло время либо сообщить об ошибках, либо отправить сообщение. Начнем с варианта, когда ошибок не было:

Затем создаем сообщение электронной почты:

И, наконец, отправляем сообщение:

Однако, если были ошибки, сообщите об этом и попросите пользователя повторить попытку:

Завершенный проект выглядит следующим образом:

Итоги

Надеюсь, что чтение этого руководства дало вам хорошее представление о новых функциях фильтрации данных PHP. Существует еще много функций и правил, которые не были охвачены, поэтому, если вас интересует больше, обратитесь к разделу Фильтрация данных в руководстве по PHP.

  • Подпишитесь на RSS-канал NETTUTS для ежедневных веб-разработок и статей.


Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.