✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Вы должны использовать функции фильтрации PHP, часть 2

39

В предыдущем посте я говорил о том, почему использование функций фильтрации PHP более полезно, чем нет.

Короче говоря, это помогает обеспечить встроенный в язык уровень проверки, чтобы нам не приходилось что-то переписывать. Естественно, есть оговорки.

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

Но если вы используете адреса электронной почты, URL-адреса, номера, IP-адреса и многое другое, вы можете использовать то, что уже существует.

В любом случае, все вышесказанное по-прежнему относится к фильтрации переменных. А как насчет входов? То есть те, которые исходят от $_POSTили $_GET. Аналогичную стратегию можно использовать с другой функцией и другим набором фильтров.

Но если вы понимаете основы, представленные в прошлом посте, то и этот пост не будет сильно отличаться.

Функции фильтрации PHP, часть 2: входные данные

Фильтрация входных данных выполняется filter_inputфункцией. Определение этой конкретной функции:

Получает определенную внешнюю переменную по имени и при необходимости фильтрует ее.

Руководство по PHP

И, как упоминалось в прошлый раз, это звучит немного странно, пока вы не поймете, что такое фильтры. К счастью, мы рассмотрели это в предыдущем посте. И хотя этот пост будет посвящен именно POST(и очень кратко GET).

Хотя есть и другие фильтры. К ним относятся:

  • INPUT_COOKIE
  • INPUT_SERVER
  • INPUT_ENV

В любом случае, поскольку две наиболее распространенные операции, которые я обычно вижу в WordPress, включают POSTи GET, то кажется важным включить их здесь.

Вы должны использовать функции фильтрации PHP, часть 2

Использование этих функций тривиально просто. Предположим, что у вас есть значение, полученное от чего-то, что пользователь предоставил в форме, и он отправляет его на сервер, используя 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

Источник записи: tommcfarlin.com

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