我正在尝试使用filter_input_array()来验证一些帖子数据。尽管我付出了最大的努力,但函数似乎在$ filter数组中返回null值(传递条件),而不是验证失败并返回false,如我所料。
以下是代码实现的示例:
$filters = array(
'phone' => FILTER_VALIDATE_INT,
'email' => FILTER_VALIDATE_EMAIL
);
if(filter_input_array(INPUT_POST, $filters)){
//filters are validated insert to database
} else{
//filters are invalid return to form
}
不管有什么不好的数据(例如,电话='a',电子邮件='{} /!〜')我输入的数组仍然返回而不是返回false的函数并且条件失败。任何帮助将不胜感激。
答案 0 :(得分:3)
filter_input_array
将不会返回false。相反,如果过滤器失败,它将返回一个数组,其中相应的项设置为false(如果未设置,则返回null。
答案 1 :(得分:2)
filter_input_array
函数将结果作为已编辑输入的数组返回,如果失败则返回FALSE,如果未设置每个输入,则返回NULL。所以你应该在变量中得到结果。
另一件事是先检查谎言。
你需要这样的东西
$filters = array(
'phone' => FILTER_VALIDATE_INT,
'email' => FILTER_VALIDATE_EMAIL
);
if(false === ($res = filter_input_array(INPUT_POST, $filters))){
/* Not valid */
} elseif(null == $res) {
/* Something is not set */
} else {
/* Everything is alright
* You can use $res variable here.
*/
}
看看php手册:php.net manual
答案 2 :(得分:2)
要按照您希望的方式保存代码,请尝试使用此方法
$filters = array(
'phone' => FILTER_VALIDATE_INT,
'email' => FILTER_VALIDATE_EMAIL
);
if(!in_array(null || false, filter_input_array(INPUT_POST, $filters)))
//enter into the db
else
//Validation failled