Ответ 1
Пытаться:
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
Ссылки:
При использовании 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
?
Пытаться:
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
Ссылки:
FILTER_REQUIRE_ARRAY
вернет значение false, если переменная POST
содержит скалярное значение. Если вы не уверены или просто намереваетесь использовать переменную POST
, принимающую значения как в скалярном, так и в массиве, используйте вместо этого FILTER_FORCE_ARRAY
, который будет обрабатывать любой вход в виде массива, в результате, соответственно применяя скалярные значения.
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY);
Я использовал 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);
Затем я получу все данные в массив, который я могу передать...
В качестве альтернативы вы можете сделать фильтрацию за один выстрел... например
$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.