Активная фильтрация данных в PHP

Активная фильтрация данных в PHP

Закрытый противогаз

Здравствуйте, уважаемые читатели!

В предыдущей заметке был рассказ о том, как простым способом проверить значения вводимых данных, опираясь на средства, которые имеются в самом языке программирования PHP. В продолжение темы фильтрации данных в этой статье затронем вопросы о создании так называемых «активных» фильтров. Такие фильтры не только осуществляют проверку введённых в формы значений, но и, если возникает подобная необходимость, приводят данные к приемлемому виду.

В случае надобности можно организовать автоматическую правку вводимых данных, что и показано на примере простого обработчика формы:

if(!filter_has_var(INPUT_POST, "site_url"))
{
echo("Это поле формы не было заполнено");
}
else
{
$site_url = filter_input(INPUT_POST,
"site_url", FILTER_SANITIZE_URL);
}

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

Обычно формы состоят не из одного поля, а из нескольких. И при этом совсем не обязательно для каждого отдельного поля применять функции фильтрации filter_var или filter_input. В нижеприведённом примере можно увидеть, как три различных переменных будут проверяться единожды вызванной функцией filter_input_array():

$filters = array
(
"name" => array
(
"filter"=>FILTER_SANITIZE_STRING
),
"age" => array
(
"filter"=>FILTER_VALIDATE_INT,
"options"=>array
(
"min_range"=>16,
"max_range"=>120
)
),
"email"=> FILTER_VALIDATE_EMAIL,
);
$result = filter_input_array(INPUT_GET, $filters);

В этом примере вызов функции filter_input_array() производит работу с массивом, в котором определяются имена переменных, подлежащих проверке, а также назначенные для них фильтры и вспомогательные опции. Результаты работы сохраняются в хеше, где true или false показывает валидность того или иного значения.

Дискуссия по теме