Despite the documentation for 'type', you can specify multiple types by doing:
$test = filter_input(INPUT_GET | INPUT_POST, 'test');
This was tested in 5.2.3.
When both are set it appears to return the value defined first by variables_order (php.ini).
This trick does not seem to work in filter_input_array though. Neither function supports INPUT_REQUEST at the moment.
filter_input
(PHP 5 >= 5.2.0, PECL filter:0.11.0)
filter_input — Принимает переменную извне PHP и, при необходимости, фильтрует ее
Описание
Список параметров
- type
-
Один из INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV, INPUT_SESSION (не реализовано) и INPUT_REQUEST (не реализовано).
- variable_name
-
Имя переменной.
- filter
-
Применяемый фильтр. По умолчанию FILTER_DEFAULT.
- options
-
Ассоциативный массив параметров либо логическое ИЛИ флагов. Если фильтр принимает параметры, флаги могут быть указаны в элементе массива "flags".
Возвращаемые значения
Значение запрашиваемой переменной в случае успеха, FALSE, если фильтрация завершилась неудачей, или NULL, если переменная variable_name не определена. Если установлен флаг FILTER_NULL_ON_FAILURE, функция возвращает FALSE, если переменная не определена и NULL, если фильтрация завершилась неудачей.
Примеры
Пример #1 Пример использования filter_input()
<?php
$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "Вы искали $search_html.\n";
echo "<a href='?search=$search_url'>Искать снова.</a>";
?>
Результатом выполнения данного примера будет что-то подобное:
Вы искали Me & son. <a href='?search=Me%20%26%20son'>Искать снова.</a>
filter_input
02-Jan-2008 08:30
10-Dec-2007 09:49
If you want to use the callback filter with filter_input, you need to do something like:
$args = array ('options' => 'mycallbackfunction');
$foobar = filter_input(INPUT_POST,'postedvariable',FILTER_CALLBACK,$args);
23-Aug-2007 11:10
FastCGI seems to cause strange side-effects with unexpected null values when using INPUT_SERVER and INPUT_ENV with this function. You can use this code to see if it affects your server:
<?php
var_dump($_SERVER);
foreach ( array_keys($_SERVER) as $b ) {
var_dump($b, filter_input(INPUT_SERVER, $b));
}
echo '<hr>';
var_dump($_ENV);
foreach ( array_keys($_ENV) as $b ) {
var_dump($b, filter_input(INPUT_ENV, $b));
}
?>
If you want to be on the safe side, using the superglobal $_SERVER and $_ENV variables will always work. You can still use the filter_* functions for Get/Post/Cookie without a problem, which is the important part!
