English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP Основной Урок

PHP Уровеньный Урок

PHP & MySQL

PHP Референс Мануал

Фильтры PHP

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

Использование фильтрации и проверки данных

Очистка и проверка ввода пользователя является одной из самых распространенных задач в веб-приложениях. Чтобы упростить эту задачу, PHP предоставляет вектор фильтрации, который можно использовать для очистки или проверки данных, таких как адрес электронной почты, URL, адрес IP и т.д.

Чтобы использовать расширение фильтра для проверки данных, вам нужно использовать функцию filter_var() в PHP. Основной синтаксис этой функции можно представить следующим образом:

filter_var(variable, filter, options)

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

Очистка строки

В следующем примере показано, как можно очистить строку, удалив все HTML-теги из нее:

<?php
// Пример комментария пользователя
$comment = "<h1>Эй! Как у тебя сегодня?</h1>";
 
// Очистка и вывод строки комментария
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment;
?>
Тестировать посмотрим‹/›

Вывод примера выше выглядит следующим образом:

Эй! Как у тебя сегодня?

Проверка значения целого числа

В следующем примере проверяется, является ли это значение действительным целым числом.

<?php
// Пример целого значения
$int = 20;
 
// Проверка значения целого числа
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "<b>$int</b> является действительным целым числом";
} else {
    echo "<b>$int</b> не является действительным целым числом";
}
?>
Тестировать посмотрим‹/›

В примере выше, если переменную $int установить в 0, то пример кода будет показывать сообщение о недействительном целом числе. Чтобы решить эту проблему, вам нужно явно проверить значение 0, как показано ниже:

<?php
//Пример целого значения
$int = 0;
 
//Проверка примерного целого значения
if(filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, FILTER_VALIDATE_INT)){
    echo "The <b>$int</b> является действительным целым числом";
} else {
    echo "The <b>$int</b> не является действительным целым числом";
}
?>
Тестировать посмотрим‹/›

Проверка IP адреса

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

<?php
//IP адрес
$ip = "172.16.254.1";
 
//Пример проверки примерного IP адреса
if(filter_var($ip, FILTER_VALIDATE_IP)){
    echo "<b>$ip</b> является действительным IP адресом";
}
    echo "<b>$ip</b> не является действительным IP адресом";
}
?>
Тестировать посмотрим‹/›

Вы можете использовать флаги FILTER_FLAG_IPV4 или FILTER_FLAG_IPV6 для применения проверки к адресам IPV4 или IPV6. Вот пример:

<?php
//IP адрес
$ip = "172.16.254.1";
 
//Пример проверки примерного IP адреса
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
    echo "<b>$ip</b> является действительным адресом IPV6";
}
    echo "<b>$ip</b> не является действительным адресом IPV6";
}
?>
Тестировать посмотрим‹/›

Чистка и проверка адреса электронной почты

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

<?php
//Адрес электронной почты
$email = "someone@@example.com";
 
//Удаление всех недопустимых символов из электронной почты
$sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
 
//Проверка адреса электронной почты
if($email == $sanitizedEmail && filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo "$email является действительным адресом электронной почты";
} else {
    echo "$email не является действительным адресом электронной почты";
}
?>
Тестировать посмотрим‹/›

Примечание:Фильтр FILTER_SANITIZE_EMAIL удаляет все недопустимые символы, за исключением букв, цифр и предоставленной строки电子邮件 адреса!#$%&'*+-=?^_`{|}~@.[]。

Очистка и проверка URL

Следующий пример покажет, как очистить и проверить URL.

<?php
// url пример
$url = "http:://www.example.com";
 
// Удаление всех недопустимых символов из URL
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);
 
// Проверка веб-сайта URL
if ($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)) {
    echo "$url являетсяvalidным веб-сайтом";
} else {
    echo "$url не являетсяvalidным веб-сайтом";
}
?>
Тестировать посмотрим‹/›

Внимание:Фильтр FILTER_SANITIZE_URL удаляет все недопустимые символы, кроме букв, цифр и предоставленной строки URL $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=.

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

<?php
// url
$url = "http://www.example.com?topic=filters";
 
// Проверка веб-сайта на наличие строки запроса
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)) {
    echo "<b>$url</b> содержит строку запроса";
} else {
    echo "<b>$url</b> не содержит строку запроса";
}
?>
Тестировать посмотрим‹/›

Пожалуйста, обратитесь кHTML URLУчебник, чтобы узнатьURLразличных компонентов.

Проверка целых чисел в диапазоне

Следующий пример проверит, является ли предоставленная стоимость целым числом и находится ли она в диапазоне от 0 до 100.

<?php
// Пример целого значения
$int = 75;
 
// Проверка образца целого значения
if (filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0, "max_range" => 100)))) {
    echo "<b>$int</b> находится в диапазоне от 0 до 100";
} else {
    echo "<b>$int</b> не находится в диапазоне от 0 до 100";
}
?>
Тестировать посмотрим‹/›