Я говорил о очистке данных в WordPress в предыдущих постах. Эта тема важна не только для тех из нас, кто работает над созданием решений для других в WordPress, но и для тех, кто пишет код, который будет напрямую взаимодействовать с базой данных через PHP.
Конечно, существуют нативные функции WordPress, которые упрощают этот процесс, но есть и встроенные функции фильтрации PHP, которые помогают в этом. А именно filter_var
и filter_input
и это вещи, которые, я думаю, полезно знать разработчикам PHP.
Функции фильтрации PHP, часть 1: переменные
Фильтрация переменных осуществляется filter_var
функцией с соответствующим названием. Официальное определение:
Фильтрует переменную с указанным фильтром
Само определение может показаться немного запутанным, особенно если вы только начинаете работать с PHP или использовать функции фильтрации. В этом определении важно понять, что такое фильтр.
Так что, если вы привыкли работать, скажем, с логическими значениями, целыми числами, адресами электронной почты и т. д. (а кто нет?), то это имеет больше смысла, не так ли? То есть, если вам нужно обеспечить некоторую проверку этих типов значений, это может помочь.
Что здорово, так это то, что независимо от того, что вы фильтруете, затем filter_var
будет возвращаться false
всякий раз, когда фильтр терпит неудачу.
Допустим, вы хотите отфильтровать адрес электронной почты, тогда вы можете сделать что-то вроде этого:
filter_var($emailAddress, FILTER_VALIDATE_EMAIL)
;
Конечно, это не без некоторых ошибок. Например, он не будет проверять нелатинские домены. Подробнее об этом на мгновение.
В любом случае, возможно, вы хотите отфильтровать другие типы значений:
filter_var($url, FILTER_VALIDATE_URL)
filter_var('1001', FILTER_VALIDATE_INT)
И вы можете сделать их более сложными в зависимости от ваших потребностей. Скажем, например, вам нужно определить, является ли IP-адрес общедоступным. Затем вы можете использовать что-то более сложное, например:
filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)
Дело в том, что важно знать, как filter_var
работает, а также какие фильтры доступны. Вот где полезность этого вступает в игру. С этой целью я настоятельно рекомендую ознакомиться с фильтрами проверки, которые предлагает PHP.
Наконец, помните примечание выше о нелатинских доменах с адресами электронной почты? Есть несколько подобных случаев с определенными функциями, которые вам нужно будет просмотреть, что говорится в руководстве относительно определенных URL-адресов, доменов и т. д., прежде чем использовать их.
В тех случаях, к сожалению, filter_var
не всегда может работать. Вместо этого регулярные выражения могут быть подходящей заменой.
Как насчет фильтрации входных данных?
Если у вас есть опыт работы с такими переменными, как $_GET
и $_POST
, то для этого есть еще одна функция фильтрации.
А в следующем посте я расскажу, как лучше всего использовать те, что традиционно используют многие из нас.