小编Rob*_*Sim的帖子

PHP:INPUT_POST(在filter_input_array中使用)覆盖$_POST之前的所有修改

PHP 过滤器函数filter_input_array()的INPUT_POST参数,例如

filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
Run Code Online (Sandbox Code Playgroud)

似乎会覆盖应用于超全局 $_POST 的任何修改。

测试:

<?php
// 1.
$_POST['abc'] = '123';
var_dump($_POST);

// 2.
$_POST  = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);
var_dump($_POST);
?>
Run Code Online (Sandbox Code Playgroud)

输出:

// 2. 之后你的 $_POST 将为空(因为初始 POST 为空)

index.php:4:
array (size=1)
'abc' => string '123' (length=3)

index.php:8:null
Run Code Online (Sandbox Code Playgroud)

所以请确保,把

$_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING, true);
Run Code Online (Sandbox Code Playgroud)

在你的脚本的顶部

问:是否有人也注意到了这种行为——或者我在推理中犯了错误?

可能的答案:数据是从超全局$_REQUEST获取的,而不是从$_POST获取的

php post request filter superglobals

6
推荐指数
2
解决办法
8021
查看次数

标签 统计

filter ×1

php ×1

post ×1

request ×1

superglobals ×1