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

use*_*510 3 php validation filter

我正在关注数据验证的一些练习,并决定搞乱这个filter_input()功能.当我尝试运行此代码时:

$_POST['var'] = 10;

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

var_dump($filtered);
Run Code Online (Sandbox Code Playgroud)

var_dump($filtered)返回NULL.我知道代码有效,如果$_POST['var']通过提交表单分配值,但我只是想知道为什么手动为$_POST[]数组赋值不返回float(10)

Bol*_*ock 11

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

  • @user如果你想使用`INPUT_POST`,它会专门验证*POSTed数据*.如果要验证已设置的其他数据,请不要使用`INPUT_POST`. (2认同)

nic*_*nda 5

这是因为INPUT_POST适用于原始 POST 值,在脚本中对其进行修改没有效果。但是,如果你想过滤该变量,你可以使用:

filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);
Run Code Online (Sandbox Code Playgroud)