Фильтрация вводимых данных в PHP

Фильтрация вводимых данных в PHP

Противогазы для фильтрации

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

В языке PHP существует специальное расширение «PHPfilter», предназначенное для упрощения проверки введённых данных в скрипт значений. Необходимо заметить, что если Вы заботитесь о безопасности своих веб-проектов, то фильтрация данных должна стать для Вас обязательной процедурой. Фильтровать необходимо всё, что скрипт принимает извне: GET и POST переменные, результаты запроса к базам данных, куки, данные от других служб и, естественно, поля формы.

Проверка переменных осуществляется нижеприведёнными функциями:
filter_input() – инспектируется аргумент скрипта;
filter_input_array() – то же самое, только для нескольких переменных;
filter_var() – указанный фильтр проверяет единичную переменную;
filter_var_array() – здесь может применяться несколько фильтров для проверки нескольких переменных.

Для примера рассмотрим следующий код:

$myf = 4321;
if(!filter_var($myf, FILTER_VALIDATE_INT))
{
echo("Переменная содержит нецелочисленное значение!!!");
}
else
{
echo("Значение переменной выдержало проверку!!!");
}
?>

FILTER_VALIDATE_INT — это фильтр, который исключает нецелочисленные значения переменной $myf. Мы не станем здесь перечислять все фильтры, с которыми при желании Вы сможете ознакомиться в документации по PHP. Заметим только, что фильтры условно делятся на две группы. Первая — это фильтры, выполняющие только проверку. Вторая — обработчики переменных, которые проверяют допустимость отдельных составляющих значения и исправляют его по возможности.
Для увеличения гибкости применяются опции и флаги. Например, Вам необходимо проверить не только целочисленность, но попадание значения в определённый интервал.

$age = 30;
$int_options = array(
"options"=>array
(
"min_range"=>16,
"max_range"=>120
)
);
if(!filter_var($age, FILTER_VALIDATE_INT, $int_options))
{
echo("Извините, допустимый возраст с 16 до 120");
}
else
{
echo("Проверка возраста пройдена успешно");
}
?>

И напоследок, ещё один пример, где проверяется правильность введения e-mail адреса.

if(!filter_has_var(INPUT_GET, "customer_email"))
{
echo("Поле е-мейл не заполнено!");
}
else
{
if (!filter_input(INPUT_GET, "customer_email", FILTER_VALIDATE_EMAIL))
{
echo "Пожалуйста, введите ваш почтовый адрес правильно";
}
else
{
echo "Проверка прошла успешно";
}
}
?>

Как видите, пользоваться фильтрами просто и удобно.

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