使用INPUT_POST时如何测试我的功能?

时间:2015-08-20 18:42:29

标签: php function sanitization

在清理应用程序中的数据输入时,我使用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);

2 个答案:

答案 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);