当我手动为$ _POST数组赋值时,为什么filter_input()返回NULL?

时间:2012-04-18 01:04:27

标签: php filter validation

我正在进行一些有关数据验证的练习,并决定使用filter_input()函数。当我尝试运行此代码时:

$_POST['var'] = 10;

$filtered = filter_input(INPUT_POST, 'var', FILTER_VALIDATE_FLOAT);

var_dump($filtered);

var_dump($filtered)返回NULL。我知道如果通过提交表单为$_POST['var']分配值,代码可以正常工作,但我只是想知道为什么手动为$_POST[]数组赋值不会返回float(10)?< / p>

3 个答案:

答案 0 :(得分:11)

filter_input()无法读取_POST / _GET / _COOKIE / _SERVER / _ENV超全局数组。它分别从这些值的原始来源读取(也用于填充超全球)。

答案 1 :(得分:4)

这是因为INPUT_POST适用于原始POST值,脚本中对它们的修改无效。 但是,如果要过滤该变量,可以使用:

filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);

答案 2 :(得分:1)

如果要设置默认输入值并过滤,请使用filter_var。因为filter_input不会过滤超全球的当前值。