Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

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

by
Difficulty:IntermediateLength:MediumLanguages:

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
Advertisement
Advertisement
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.