【问题标题】:POST Variable Array and filter_inputPOST 变量数组和 filter_input
【发布时间】:2013-10-28 14:18:46
【问题描述】:

使用filter_input 时,我无法提取POST 数组变量。 POST 输入:

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

我可以从$_POST 超全局变量中正确访问data 变量作为数组,但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 数组变量吗?

【问题讨论】:

标签: php arrays variables post input


【解决方案1】:

尝试:

$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

【讨论】:

  • 很好,完美运行。对于像我正在做的事情一样常见的事情,似乎它应该比这更简单:)
  • 同意 - 至少您认为 php 手册会包含注释或其他内容。
【解决方案2】:

如果POST 变量包含标量值,FILTER_REQUIRE_ARRAY 将返回 false。如果您不确定或只是打算让 POST 变量同时接受标量值和数组值,请改用 FILTER_FORCE_ARRAY,它将任何输入视为数组,本质上是相应地转换标量值。

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

【讨论】:

    【解决方案3】:

    我在 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);
    

    然后我会将所有数据放入一个可以传递的数组中......

    【讨论】:

    • 尝试使用 filter_input_array();
    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-01
      • 1970-01-01
      • 2012-06-13
      相关资源
      最近更新 更多