Расширение PHP Filter
PHP-фильтры используются для проверки (валидации) и очистки (санитизации) небезопасных внешних данных (например, пользовательский ввод из форм, куки, веб-сервисов или запросов к базе данных).
Валидация данных = Проверяет, имеют ли данные правильную форму (например, правильный формат email, URL, целое число и т.д.).
Санитизация данных = Удаляет любые недопустимые символы из данных.
Всегда проверяйте внешние данные!
Небезопасные отправленные данные могут привести к проблемам безопасности и нарушить работу вашей веб-страницы!
Используя PHP-фильтры, вы можете быть уверены, что ваше приложение получает правильные входные данные!
Функции PHP-фильтров
Расширение PHP Filter имеет множество функций для проверки пользовательского ввода и предназначено для упрощения и ускорения проверки данных:
filter_var()- Фильтрует одну переменную указанным фильтромfilter_input()- Получает внешнюю переменную (например, из ввода формы) и фильтрует ееfilter_var_array()- Фильтрует несколько внешних переменных (массив)filter_list()- Выводит список всех поддерживаемых имен и идентификаторов фильтров
Функция PHP filter_list()
Функция filter_list() используется для вывода списка всех поддерживаемых имен фильтров и их идентификаторов.
В следующем примере перечислены поддерживаемые имена фильтров и их идентификаторы в HTML-таблице:
Пример
<table>
<tr>
<th>Имя фильтра</th>
<th>ID фильтра</th>
</tr>
<?php
foreach (filter_list() as $id =>$filter) {
echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
}
?>
</table>
Попробуйте сами »
Функция PHP filter_var()
Функция filter_var() фильтрует одну переменную указанным фильтром.
Синтаксис
filter_var(переменная, фильтр, опции);Параметры:
- var - Обязательный. Указывает переменную для фильтрации
- filter - Необязательный. Указывает идентификатор или имя используемого фильтра
- options - Необязательный. Указывает один или несколько флагов/опций для использования
Типы фильтров в PHP
В PHP существует два типа фильтров:
Валидирующие фильтры: Эти фильтры проверяют, соответствуют ли данные определенным критериям, но не изменяют сами данные. Возвращает false, если данные недействительны.
Примеры валидирующих фильтров:
- FILTER_VALIDATE_EMAIL
- FILTER_VALIDATE_URL
- FILTER_VALIDATE_INT
- FILTER_VALIDATE_IP
Очищающие фильтры: Эти фильтры удаляют недопустимые символы из данных и могут изменять входные данные.
Примеры очищающих фильтров:
- FILTER_SANITIZE_EMAIL (удаляет недопустимые символы email)
- FILTER_SANITIZE_URL (удаляет недопустимые символы URL)
- FILTER_SANITIZE_NUMBER_INT (удаляет все символы, кроме цифр и знаков + -)
Для получения полного справочника по всем фильтрам перейдите к нашему Справочнику фильтров PHP.
Очистка и проверка email
В следующем примере используется функция
filter_var() для сначала удаления всех недопустимых символов из переменной $email, а затем проверки, является ли она действительным email-адресом:
Пример
<?php
$email = "ivan.petrov@example.com";
// Удаляем недопустимые символы из email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// Проверяем email
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo("$email - действительный email адрес");
} else {
echo("$email - НЕ действительный email адрес");
}
?>
Попробуйте сами »
Очистка и проверка URL
В следующем примере используется функция
filter_var() для сначала удаления всех недопустимых символов из URL, а затем проверки, является ли $url действительным URL:
Пример
<?php
$url = "https://www.schoolsw3.com";
// Удаляем недопустимые символы из url
$url = filter_var($url, FILTER_SANITIZE_URL);
// Проверяем url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
echo("$url - действительный URL");
} else {
echo("$url - НЕ действительный URL");
}
?>
Попробуйте сами »
Проверка целого числа
В следующем примере используется функция
filter_var() для проверки, является ли переменная $int целым числом. Если $int — целое число, вывод будет: "Целое число действительное". Если $int не является целым числом, вывод будет: "Целое число НЕ действительное":
Пример
<?php
$int = 100;
if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Целое число действительное");
} else {
echo("Целое число НЕ действительное");
}
?>
Попробуйте сами »
Совет: filter_var() и проблема с 0
В приведенном выше примере, если бы $int был установлен в 0, функция вернула бы "Целое число НЕ действительное". Чтобы решить эту проблему, используйте код ниже:
Пример
<?php
$int = 0;
if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
echo("Целое число действительное");
} else {
echo("Целое число НЕ действительное");
}
?>
Попробуйте сами »
Проверка IP-адреса
В следующем примере используется функция
filter_var() для проверки, является ли переменная $ip действительным IP-адресом:
Пример
<?php
$ip = "127.0.0.1";
if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
echo("$ip - действительный IP адрес");
} else {
echo("$ip - НЕ действительный IP адрес");
}
?>
Попробуйте сами »
Полный справочник фильтров PHP
Для получения полного справочника по всем функциям фильтрации перейдите к нашему Справочнику фильтров PHP. Проверьте каждый фильтр, чтобы увидеть, какие опции и флаги доступны.
Справочник содержит краткое описание и примеры использования для каждой функции!