我应该使用PHP的filter_input来检查Post变量的存在吗?

时间:2016-06-16 15:43:52

标签: php filter-input

我刚开始使用netbeans来编写PHP代码,并注意到我收到了几个代码警告声明我不应该使用$ _POST这样的超级全局。相反,我应该使用过滤器。

我已经对filter_input进行了一些研究并且非常了解它,但是对于一个特定的暗示有一个问题 - 检查一个变量的存在。

如果我的代码目前看起来像这样:

if(isset($_POST['name'])) {
    ... do something ...
}

我知道我可以改用:

if(filter_has_var(INPUT_POST, 'name')) {
    ... do something ...
}

但是,如果我想简单地检查是否存在任何POST变量,该怎么办?即:

if(isset($_POST)) {
    .. do something ...
}

使用下面的代码似乎有效,但我不想继续使用它而不了解这是做什么,或者它是否正确。

if(filter_input(INPUT_POST)) {
    ... do something ...
}

有人可以提供一些建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

我很抱歉迟到了,但我正在寻找相同的回应。我发现我们可以使用filter_input_array,其中定义可以是过滤器常量,例如FILTER_SANITIZE_STRING,因为所有$ _POST元素都是字符串。

if (filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING)) {
    ... do something ...
}

我还测试了你提出的代码

if(filter_input(INPUT_POST)) {
    ... do something ...
}

和filter_input(INPUT_POST)始终返回NULL并显示警告,因为filter_input至少需要两个参数。