Именно здесь приходит на помощь встроенная функция PHP —
filter_var()
. В этой статье мы подробно рассмотрим, как она работает, какие опции доступны и как её использовать для надежной обработки данных.Что такое filter_var()?
Функция filter_var() предназначена для фильтрации и проверки данных. Её цель — убедиться, что получаемые от пользователя данные соответствуют ожидаемым параметрам и свободны от вредоносных вставок.
filter_var()
способна проверять различные типы данных, включая строки, целые числа, электронные письма, URL и многое другое.Базовый синтаксис:
mixed filter_var(mixed $variable, int $filtertype[, mixed $options])
$variable
: переменная, подлежащая проверке или очистке.$filtertype
: тип фильтра, применяемый к переменной.$options
: дополнительные параметры фильтра (опционально).
Возвращаемое значение зависит от типа фильтра и успешности проверки:
- Если проверка прошла успешно, возвращается очищенное значение.
- Если проверка провалилась, возвращается
false
.
Основные типы фильтров
1. Проверка электронной почты
Проверка правильности формата электронного адреса:
$email = 'user@example.com';
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "$email — действительный e-mail.";
} else {
echo "$email — недействительный e-mail.";
}
2. Проверка URL
Проверка формата URL:
$url = 'https://example.com/path/to/resource';
if (filter_var($url, FILTER_VALIDATE_URL)) {
echo "$url — действительный URL.";
} else {
echo "$url — недействительный URL.";
}
3. Целые числа
Проверка, является ли значение целым числом:
$integer = '123';
if (filter_var($integer, FILTER_VALIDATE_INT)) {
echo "$integer — целое число.";
} else {
echo "$integer — не целое число.";
}
4. Санитаризация данных
Иногда нужно очистить строку от нежелательных символов, сохранив сам смысл данных. Например, убрать HTML-теги из текста:
$htmlString = "<b>Bold Text</b>";
$cleanString = filter_var($htmlString, FILTER_SANITIZE_STRING);
echo $cleanString; // Output: Bold Text
Также есть фильтр для удаления опасных символов из URL:
$unsafeUrl = 'javascript:alert("XSS");';
$safeUrl = filter_var($unsafeUrl, FILTER_SANITIZE_URL);
echo $safeUrl; // Output: javascript:alert(XSS);
Дополнительные опции фильтров
Некоторые фильтры принимают дополнительные параметры для тонкой настройки поведения. Например, можно ограничить диапазон чисел при фильтрации целых чисел:
$integer = '123';
$options = ["options" => ["min_range" => 100, "max_range" => 200]];
if (filter_var($integer, FILTER_VALIDATE_INT, $options)) {
echo "$integer находится в диапазоне 100-200.";
} else {
echo "$integer вне диапазона.";
}
Или ограничить длину URL:
$url = 'https://verylongdomain.example.com/';
$options = ["flags" => FILTER_FLAG_PATH_REQUIRED | FILTER_FLAG_QUERY_REQUIRED];
if (filter_var($url, FILTER_VALIDATE_URL, $options)) {
echo "$url — верный URL.";
} else {
echo "$url — неверный URL.";
}
Функция
filter_var()
является мощным инструментом для защиты и очистки данных в PHP. Используя её, вы можете предотвратить большую часть рисков, связанных с небезопасным вводом данных, и обеспечить надежность вашего веб-приложения. Всегда помните о важности проверок и санитаризации данных перед их использованием в приложении.