En utilisant filter_input
, Je ne parviens pas à extraire une variable de tableau POST
. L'entrée POST
:
type => 'container',
action => 'edit',
data[display] => 1,
data[query_limit] => 100
Je peux accéder à la variable data
à partir de $_POST
superglobal correctement en tant que tableau, mais le filter_input
la fonction ne renvoie rien:
$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)
N'est-il pas possible d'utiliser filter_input
pour une variable de tableau POST
?
Essayez:
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
Liens:
FILTER_REQUIRE_ARRAY
renverra false si la variable POST
contient une valeur scalaire. Si vous n'êtes pas sûr ou si vous souhaitez simplement que la variable POST
accepte les valeurs scalaires et de tableau, utilisez FILTER_FORCE_ARRAY
à la place, qui traitera n'importe quelle entrée comme un tableau, convertissant essentiellement les valeurs scalaires en conséquence.
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY);
J'ai utilisé FormData en javascript et poste les champs avec jquery ajax. La façon dont je reçois tous ces champs est:
$arrFields = array('field1','field2','field2','field3', 'field4','field5');
foreach($arrFields as $field){
$params[$field] = filter_input(INPUT_POST, $field, FILTER_DEFAULT);
}
var_dump($params);
Ensuite, je vais mettre toutes les données dans un tableau que je peux transmettre ...
Alternativement, vous pouvez effectuer votre filtrage en une seule fois ... par exemple
$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
)
]);
Le résultat est presque le même que les données de publication en termes de ce que vous récupérez, sauf que la variable globale $ _POST étant votre variable, ce sera $ MY_INPUT dans ce cas.