我有以下的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"
}
你的函數在我的本地主機上正常工作。你是否檢查過你的服務器上是否禁用了'extract()'? – Sean 2013-03-06 03:34:16
是的,它已啓用並正在運行:'extract(array('a'=>'b')); var_dump(get_defined_vars());'按我期望的那樣工作...(只是當我用$ _POST替換數組時)。運行PHP 5.3.2。 – MikeL 2013-03-06 03:50:32
您的原始功能對我來說也適用。您能否請您展示您的HTML表單? – 2013-03-06 06:27:13