我有以下 PHP 脚本:
<?php
function dump_extracted_post() {
extract($_POST);
var_dump(get_defined_vars());
}
dump_extracted_post();
?>
对于这个脚本,我发布了一个包含一些数据的表单,它会产生以下(意外)结果:
Array(0) {
}
为什么我看不到发布的数据?
我对 extract() 或 get_defined_vars() 的理解是否遗漏了什么?是否有某种安全设置可能会干扰从 $_POST 中提取?
我知道提取的性质令人不悦,所以这可能是一个安全问题,但扫描 php 文档似乎没有提到任何此类问题。我想用它来做一些简单的模板。
如果我将脚本更改为:
<?php
function dump_extracted_post() {
var_dump($_POST);
}
dump_extracted_post();
?>
我按预期看到了发布的数据(所以是的,我肯定是在发布数据)。
同样,如果我将脚本更改为:
<?php
function dump_extracted_post() {
$a = 'moocows';
var_dump(get_defined_vars());
}
dump_extracted_post();
?>
我看到了预期的输出:
array(1) {
["a"]=>
string(7) "moocows"
}