PHP фильтр
PHP фильтр используется для проверки и фильтрации данных из ненадежных источников, таких как ввод данных пользователем.
Что такое PHP фильтр?
PHP фильтр используется для проверки и фильтрации данных из ненадежных источников.
Тестирование, проверка и пользовательский ввод фильтра или пользовательских данных является важной частью любого веб-приложения.
Расширение PHP фильтр предназначен для фильтрации данных сделать проще и быстрее.
Зачем использовать фильтр?
Почти все веб-приложения зависят от внешних входов. Эти данные, как правило, приходят от пользователей или других приложений (например, веб-сервисов). С помощью фильтров вы можете убедиться, что приложения получить правильный тип входного сигнала.
Вы должны всегда внешняя фильтрация данных!
Фильтрация ввода является наиболее важные вопросы безопасности приложений.
Что такое внешние данные?
- Входные данные из формы
- печенье
- Данные веб-сервисы
- Переменные сервера
- Результаты запросов к базам данных
Функции и фильтры
Для фильтрации переменной, используйте одну из следующих функций фильтра:
- filter_var () - для фильтрации одну переменную с помощью определенного фильтра
- filter_var_array () - для фильтрации множества переменных одними и теми же или различными фильтрами
- filter_input - Получить одну входную переменную и фильтровать
- filter_input_array - получить больше входных переменных, и одними и теми же или различными фильтрами для их фильтрации
В следующем примере мы используем filter_var () функция проверяет целое:
<?php $int = 123; if(!filter_var($int, FILTER_VALIDATE_INT)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
Приведенный выше код использует "FILTER_VALIDATE_INT" фильтр для фильтрации переменной. Так как целое число является законным, так что приведенные выше выходной код будет:
Если мы попытаемся использовать переменную нецелым (например, "123abc"), выводится: "Integer не действителен".
Для получения полного списка функций и фильтров, посетите наш PHP Filter Reference Manual .
Проверка и дезинфекцию
Есть два вида фильтров:
Проверка фильтров:
- Используется для проверки пользовательского ввода
- правила строгий формат (например, URL или E-Mail проверки)
- В случае успеха, ожидаемый тип возвращаемого значения, если он не возвращает FALSE
Дезинфекции фильтры:
- Он используется, чтобы разрешить или запретить указанную строку символов
- Нет правил формата данных
- Всегда возвращает строку
Параметры и флаги
Функции и флаги используются для добавления дополнительных параметров фильтрации для указанных фильтров.
Различные фильтры имеют различные варианты и флаги.
В следующем примере мы используем filter_var () и "min_range" и опцию "max_range", чтобы проверить целое число:
<?php $var=300; $int_options = array( "options"=>array ( "min_range"=>0, "max_range"=>256 ) ); if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) { echo("不是一个合法的整数"); } else { echo("是个合法的整数"); } ?>
Как приведенный выше код, как соответствующий вариант должен быть помещен в массив под названием "варианты" в. Если флаг не требуется, в пределах массива.
Так как целое число, "300", это не находится в пределах указанного диапазона, выход кода выше:
不是一个合法的整数
Для получения полного списка функций и фильтров, посетите наш PHP Filter Reference Manual . Вы можете увидеть опции, доступные для каждого фильтра и флагов.
Проверка ввода
Давайте попробуем проверки ввода из формы.
Нам нужно сделать первым делом, чтобы подтвердить, что входные данные, которые мы ищем.
Затем мы используем функцию filter_input () для фильтрации данных, введенных.
В приведенном ниже примере, входная переменная "электронная почта" передается на страницу PHP:
<?php if(!filter_has_var(INPUT_GET, "email")) { echo("没有 email 参数"); } else { if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) { echo "不是一个合法的 E-Mail"; } else { echo "是一个合法的 E-Mail"; } } ?>
Примеры приведенных выше результатов были следующими:
Примеры объяснил
В приведенном выше примере имеет входную переменную по электронной почте) ( "GET" метод передачи:
- Обнаружение присутствия типа "электронная почта" входной переменной "GET"
- Если есть входная переменная для определения, является ли он действительный адрес электронной почты
вход Очистка
Давайте попробуем выяснить исходя из форм URL.
Прежде всего, нам нужно подтвердить, что входные данные, которые мы ищем.
Тогда мы санировать функцию ввода данных filter_input ().
В приведенном ниже примере, переменная ввода "URL" передается на страницу PHP:
<?php if(!filter_has_var(INPUT_GET, "url")) { echo("没有 url 参数"); } else { $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url; } ?>
Примеры объяснил
Примеры выше по одной входной переменной (URL) "GET" метод отправлено:
- Обнаружение присутствия типа "URL" входными переменными "GET"
- Если входная переменная существует, то его очистка (удаление недопустимых символов), и будет хранить его в переменной $ URL-адрес
Если входная переменная является строкой, следующим образом: "http://www.ruaanoob.com/", переменная $ URL после очистки выглядит следующим образом:
Множество входного фильтра
Формы часто состоят из нескольких полей ввода. Чтобы избежать filter_var или filter_input функцию с именем неоднократно, мы можем использовать filter_input_array filter_var_array или функцию.
В этом случае мы используем filter_input_array () функцию для фильтрации трех переменных GET. Полученное переменные GET является имя, возраст и адрес электронной почты:
<?php $filters = array ( "name" => array ( "filter"=>FILTER_SANITIZE_STRING ), "age" => array ( "filter"=>FILTER_VALIDATE_INT, "options"=>array ( "min_range"=>1, "max_range"=>120 ) ), "email"=> FILTER_VALIDATE_EMAIL ); $result = filter_input_array(INPUT_GET, $filters); if (!$result["age"]) { echo("年龄必须在 1 到 120 之间。<br>"); } elseif(!$result["email"]) { echo("E-Mail 不合法<br>"); } else { echo("输入正确"); } ?>
Примеры объяснил
В приведенном выше примере имеет три входных переменных (имя, возраст и электронная почта), переданные через "GET" метод:
- Настройка массив, содержащий имена входных переменных, используемых для задания входных переменных и фильтр
- () Функция, входные параметры, в том числе GET переменные и просто набор вызовов массив filter_input_array
- Обнаружение $ результат переменной "возраст" и "электронная почта" входной переменной является незаконным. (Если есть незаконный ввод, после того, как функция использования filter_input_array (), входной переменной FALSE.)
filter_input_array () Второй аргумент функции может быть массивом или один фильтр ID.
Если параметр одного фильтра ID, то указанный фильтр будет фильтровать все значения входного массива.
Если этот параметр является массивом, массив должен соответствовать следующим правилам:
- Должно быть ассоциативный массив, содержащий входной переменной ключа массива (например, "возраст" входной величины)
- Значение этого массива должен быть идентификатор фильтра или положения фильтра, флаги и опции массивов
Использование фильтра Обратный звонок
При использовании FILTER_CALLBACK фильтров, вы можете вызвать пользовательскую функцию, использовать его в качестве фильтра для использования. Таким образом, мы имеем полный контроль над фильтрацией данных.
Вы можете создать свою собственную функцию, или вы можете использовать существующие функции PHP.
Вы будете готовы использовать функцию фильтра, в соответствии с положениями, указанными вариантами заранее заданным способом. В ассоциативном массиве с именем "варианты".
В следующем примере мы используем пользовательскую функцию всех "_" преобразуется в пробелы:
<?php function convertSpace($string) { return str_replace("_", ".", $string); } $string = "www_w3big_com!"; echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace")); ?>
Результат приведенного выше кода выглядит следующим образом:
Примеры объяснил
Приведенные выше примеры все "_" в "".:
- Для того, чтобы создать "_" заменяется на "." Функция
- filter_var () Вызов функции, какие параметры FILTER_CALLBACK фильтр и массив, содержащий нашу функцию