56

を使用しているときに、配列変数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

4

4 に答える 4

137

試す :

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

リンク:

http://php.net/manual/en/function.filter-input.php

http://php.net/manual/en/filter.filters.flags.php

于 2013-10-28T14:27:00.347 に答える
14

FILTER_REQUIRE_ARRAYPOST変数にスカラー値が含まれている場合は false を返します。POSTスカラー値と配列値の両方を受け入れる変数が不明な場合、またはそのつもりである場合は、FILTER_FORCE_ARRAY代わりに使用してください。これは、入力を配列として扱い、それに応じて基本的にスカラー値をキャストします。

$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY);
于 2016-07-24T03:49:06.063 に答える
2

または、フィルタリングをワンショットで行うこともできます...たとえば

$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 になることを除いて、返される内容に関して投稿データとほぼ同じです。

于 2019-07-03T14:24:32.573 に答える
2

私はJavaScriptでFormDataを使用し、フィールドを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);

次に、渡すことができる配列にすべてのデータを取得します...

于 2017-04-02T20:02:08.527 に答える