2

所以我有一个无法解决的问题,我确信我做错了一些简单的事情,但我仍然找不到错误,我有一个带有 2 个选项元素的 html 选择元素,选择设置为多个选项和两个选项设置为选中,您所要做的就是单击应用按钮并查看结果。

所以我的问题是,当您运行此场景并对过滤器输入进行变量转储时,它返回 false(无数据),但是当您变量转储 $_POST 全局变量时,它具有我正在寻找的数据,知道我是什么我做错了。

这是代码:

$submit = filter_input(INPUT_POST, 'submit', FILTER_SANITIZE_SPECIAL_CHARS);

if(!isset($submit)){
    ?>
<form action="" method="post">
    <select name="partsused[]" id="usedparts" multiple>
        <option value="empty" selected>Empty</option>
        <option value="full" selected>Full</option>
    </select>

    <br/>
    <button type="submit" name="submit" value="submit">Apply</button>
</form>
  <?php  
} else {    
    $someArray = filter_input(INPUT_POST, 'partsused');

    var_dump($someArray);
    var_dump($_POST['partsused']);
    die;
}  

我从 var_dump 得到的输出如下:

bool(false) 
array(2) { [0]=> string(5) "empty" [1]=> string(4) "full" }   

所以你可以看到 filter_input 根本没有从 $_POST 中读取值,我已经尝试了所有不同的过滤器,甚至根本没有过滤。

所以为了清楚起见,是的,将 S_POST['partsused'] 分配给变量 $someArray 确实有效,但我不喜欢这样做,我总是使用 filter_input,不知道为什么这样做,任何想法或需要。

4

2 回答 2

1

根据评论,如果输入是一个数组并且您正在使用filter_input,则需要使用以下设置:

var_dump(filter_input(INPUT_POST, 'partsused', FILTER_DEFAULT , FILTER_REQUIRE_ARRAY));

并根据文档:

FILTER_REQUIRE_ARRAY- 要求值是一个数组。

于 2018-07-12T09:07:36.817 回答
0

您必须改用filter_input_array

$someArray = filter_input_array(INPUT_POST, 'partsused');
于 2018-07-12T09:08:59.113 回答