Подтвердить что ты не робот

POST Variable Array и filter_input

При использовании filter_input я не могу использовать переменную массива POST. Вход POST:

type              => 'container',
action            => 'edit',
data[display]     => 1,
data[query_limit] => 100

Я могу получить доступ к переменной data из супермарлога $_POST правильно как массив, но функция filter_input ничего не возвращает:

$data   = $_POST['data']; // Working, woot
$data   = filter_input(INPUT_POST, 'data'); // returns null, should return array
$action = filter_input(INPUT_POST, 'action'); // returns "edit" (correctly)

Невозможно использовать filter_input для переменной массива POST?

4b9b3361

Ответ 2

FILTER_REQUIRE_ARRAY вернет значение false, если переменная POST содержит скалярное значение. Если вы не уверены или просто намереваетесь использовать переменную POST, принимающую значения как в скалярном, так и в массиве, используйте вместо этого FILTER_FORCE_ARRAY, который будет обрабатывать любой вход в виде массива, в результате, соответственно применяя скалярные значения.

$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY);

Ответ 3

Я использовал FormData в javascript и размещал поля с jquery ajax. Я получаю все это поле:

$arrFields = array('field1','field2','field2','field3', 'field4','field5');
foreach($arrFields as $field){
   $params[$field] = filter_input(INPUT_POST, $field, FILTER_DEFAULT);
}
var_dump($params);

Затем я получу все данные в массив, который я могу передать...

Ответ 4

В качестве альтернативы вы можете сделать фильтрацию за один выстрел... например

$MY_INPUT = filter_input_array(INPUT_POST, [
    "item_id" => FILTER_SANITIZE_NUMBER_INT,
    "item_string_code" => FILTER_SANITIZE_STRING,
    "method" => FILTER_SANITIZE_STRING,
    "item_id_array" => array(
        'filter' => FILTER_SANITIZE_NUMBER_INT,
        'flags' => FILTER_REQUIRE_ARRAY
    )
]);

Результат почти такой же, как данные публикации с точки зрения того, что вы получите обратно, за исключением того, что вместо глобальной переменной $ _POST, являющейся вашей переменной, в этом случае будет $ MY_INPUT.