В предыдущем посте я говорил о том, почему использование функций фильтрации PHP более полезно, чем нет.
Короче говоря, это помогает обеспечить встроенный в язык уровень проверки, чтобы нам не приходилось что-то переписывать. Естественно, есть оговорки.
Например, если вам нужно проверить значение, состоящее из нелатинских символов, вам придется сделать это в одиночку и реализовать проверку, возможно, с помощью регулярного выражения.
Но если вы используете адреса электронной почты, URL-адреса, номера, IP-адреса и многое другое, вы можете использовать то, что уже существует.
В любом случае, все вышесказанное по-прежнему относится к фильтрации переменных. А как насчет входов? То есть те, которые исходят от $_POSTили $_GET. Аналогичную стратегию можно использовать с другой функцией и другим набором фильтров.
Но если вы понимаете основы, представленные в прошлом посте, то и этот пост не будет сильно отличаться.
Функции фильтрации PHP, часть 2: входные данные
Фильтрация входных данных выполняется filter_inputфункцией. Определение этой конкретной функции:
Получает определенную внешнюю переменную по имени и при необходимости фильтрует ее.
И, как упоминалось в прошлый раз, это звучит немного странно, пока вы не поймете, что такое фильтры. К счастью, мы рассмотрели это в предыдущем посте. И хотя этот пост будет посвящен именно POST(и очень кратко GET).
Хотя есть и другие фильтры. К ним относятся:
INPUT_COOKIEINPUT_SERVERINPUT_ENV
В любом случае, поскольку две наиболее распространенные операции, которые я обычно вижу в WordPress, включают POSTи GET, то кажется важным включить их здесь.
Использование этих функций тривиально просто. Предположим, что у вас есть значение, полученное от чего-то, что пользователь предоставил в форме, и он отправляет его на сервер, используя POSTзапрос с таким ключом, как firstname.
Код для проверки может выглядеть примерно так:
filter_input(INPUT_POST, 'firstname');
Это достаточно легко понять, потому что он просто берет ключ, фильтрует его, а затем возвращает значение. И поскольку он возвращает значение, мы можем установить защитное предложение, прежде чем двигаться дальше:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
Если все проверено, мы можем двигаться дальше, делая все, что нам нужно, с информацией о пользователе. Возможно, по какой-то причине нам нужно связать его с текущим постом:
1if (false === filter_input(INPUT_POST, 'firstname')) {
2 return;
3}
4
5$firstname = filter_input(INPUT_POST, 'firstname');
6update_post_meta(get_the_ID(), 'acme-firstname', $firstname);
7
8// Other code you may use...
Кроме того, вы можете еще больше защитить информацию, используя различные существующие фильтры. Они передаются в качестве третьего параметра filter_inputфункции.
А что насчет GET?
Преимущество этой функции в том, что, вообще говоря, остаются в силе те же правила, что и в случае с POSTисключением вместо использования INPUT_POSTвы будете использовать INPUT_GET.
И тогда вы можете работать со своим кодом так, как это лучше всего соответствует потребностям вашего проекта.
Безопасность, одноразовые номера и т. д.
Помните, что это не то, что можно использовать вместо безопасности. Это делается исключительно в целях защиты данных, прежде чем что-либо с ними делать.
Не заменяйте проверку одноразовых значений только потому, что вы проверяете данные по-другому.
Переменные и входы
Помните, хотя эти функции являются очень похожими переменными, а входные данные у них разные. Другими словами, не пытайтесь использовать filter_var, когда вы работаете с данными, поступающими от пользователя или браузера. Используйте его всякий раз, когда вы работаете с переменными. И, аналогично, используйте ht e
