在清理应用程序中的数据输入时,我使用filter_input_array
PHP函数。考虑以下示例:
public function acquireData()
{
$args = array(
'model' => FILTER_SANITIZE_STRING,
);
//function that sanitizes input from POST
$output = filter_input_array(INPUT_POST, $args);
return $output;
}
当我从Web浏览器读取实时POST数据时,它工作正常。但是当我想传递另一个数组用于测试时,我很难找到解决方案。
即。使用我自己的数组不起作用并产生空$output
:
$myInputArray = array('model' => 'ABC'); //with same parameters as $_POST
$output = filter_input_array($myInputArray, $args);
//$output is null;
注意
我想专门使用INPUT_POST
构造。或者得到答案"这是不可能的"或者"你只能寻求解决方法"。
即。使用filter_var_array
是一种解决方法,因为它不使用INPUT_POST
。示例解决方案如下:
$output = filter_var_array($_POST, $args);
答案 0 :(得分:0)
直到我知道更好,似乎只有一种解决办法:
$output = filter_var_array($_POST, $args)
换句话说,当您想要使用自己的数组进行测试时,要么编写另一个函数来清理自己数组的输入,要么使用filter_var_array
而不是filter_input_array
。
答案 1 :(得分:0)
filter_input_array
似乎只是一个便利功能。您可以提供一个常量来指定可以自动过滤的一组标准全局变量,而不是提供包含输入的特定变量。所以
filter_input_array(INPUT_POST, $args);
相当于:
filter_var_array($_POST, $args);