2011-11-06 45 views
6

如何在PHP中傳遞一個變量作爲$ _POST數組鍵值?還是不可能?

$test = "test"; 
echo $_POST[$test]; 

感謝

+2

您演示的內容應該有效,但我不確定您要做什麼? –

+0

哦,天哪,它的作品。另一段代碼被扔掉了。 – Dietpixel

回答

9
$_POST['key'] = "foo"; 
echo $_POST['key']; 

如果我理解正確的,你想設置一個$_POST關鍵。

4

是的,是的,你可以:

$postName = "test"; 
$postTest = $_POST[$postName]; 
$_POST["test"] == $postTest; //They're equal 
0

就像你說......

例子:

// create an array of all the GET/POST variables you want to use 
$fields = array('salutation','fname','lname','email','company','job_title','addr1','addr2','city','state', 
       'zip','country','phone','work_phone'); 

// convert each REQUEST variable (GET, POST or COOKIE) to a local variable 
foreach($fields as $field) 
    ${$field} = sanitize($_POST[$field]); 
?> 

根據意見和downvotes更新....

我不是,因爲有人建議在下面的評論循環所有數據並添加到變量 - im循環預先確定的變量列表並將它們存儲在變量中...

我改變了獲取d ata

+1

這應該幾乎從來沒有完成,我可以輕鬆地注入您的代碼或更改您的系統變量,並通過修改查詢字符串收集系統信息! – Fabrizio

+0

@Fabrizio對不起,我的無知 - 你怎麼注入我的代碼 - 數組是服務器端?它與列出每一個有什麼不同 – ManseUK

+0

假設你有一個名爲'$ mysql_user'的系統變量,並且我傳遞了類似'?mysql_user = root'的查詢,你將嘗試使用用戶連接到你的mysql服務器'root'。它可能會給屏幕上的錯誤提供更多的信息。你正在試圖仿效'register_global'在PHP中做什麼。有一個原因爲什麼這是現在棄用;-) – Fabrizio

14

如果我明白你的意思,你想通過發佈將一個變量從一個php文件傳遞給另一個。這確實有幾種可能。

1.隨着HTML形式

<form action="target.php" method="post"> 
    <input type="text" name="key" value="foo" /> 
    <input type="submit" value="submit" /> 
</form> 

如果你點擊提交按鈕,0​​在target.php將包含'foo'

2.直接從PHP

$context = stream_context_create(array(
    'http' => array(
     'method' => 'POST', 
     'header' => "Content-type: text/html\r\n", 
     'content' => http_build_query(array('key' => 'foo')) 
    ), 
)); 
$return = file_get_contents('target.php', false, $context); 

同樣的事情在1.,並$return將包含由target.php產生的所有輸出。

3.通過AJAX(jQuery的(JavaScript的))

<script> 
$.post('target.php', {key: 'foo'}, function(data) { 
    alert(data); 
}); 
</script> 

同樣的事情,在2.,但現在data包含target.php輸出。