6

我正在关注一些关于数据验证的练习,并决定搞乱这个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)

4

3 回答 3

12

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

于 2012-04-18T01:06:38.523 回答
4

这是因为INPUT_POST对原始 POST 值起作用,在您的脚本中对它们的修改无效。但是,如果要过滤该 var,可以使用:

filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);
于 2012-04-18T01:19:49.907 回答
1

如果要设置默认输入值和过滤器,请使用filter_var. 因为 filter_input 不过滤超全局变量的当前值。

于 2012-04-18T01:14:29.160 回答