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超全局数组.它分别从这些值的原始来源读取(也用于填充超全球).
这是因为INPUT_POST适用于原始 POST 值,在脚本中对其进行修改没有效果。但是,如果你想过滤该变量,你可以使用:
filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);
Run Code Online (Sandbox Code Playgroud)