PHP过滤器
我试图使用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
}
不管是哪种坏数据(例如phone ='a',email ='{} /!〜'),我输入的数组仍然返回,而不是返回false和失败条件的函数。 任何帮助将不胜感激。
为了让代码保持您想要的样子,请尝试使用此方法
$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
如果任何过滤器失败, filter_input_array
不会返回false。 相反,如果过滤器失败,它将返回一个数组,其中相应的项目设置为false(如果未设置,则返回null。
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手册
链接地址: http://www.djcxy.com/p/92699.html上一篇: PHP filter