2014-05-23 65 views
0

我注意到我可以在POST請求中使用$_GET,爲什麼可能呢?

HTML表單:

<form method="POST" action="test.php?id=123"> 
    <input type="text" name="foo"> 
    <input type="submit"> 
</form> 

test.php的:

<?php 
var_dump($_GET, $_POST); 

輸出:

array (size=1) 
    'id' => string '123' (length=3) 

array (size=1) 
    'foo' => string 'bar' (length=3) 

回答

1

在相反的是他們的名字,$_GET$_POST建議不依賴到H的GETPOST的方法TTP規範。

查詢字符串(在PHP的$_GET變量中表示爲關聯數組)可以是任何URL的一部分,也可以是GET,POST,PUT或該URL上的任何其他方法。雖然查詢字符串最常用於GET方法,但它們當然不限於它們。因此,當將表單發佈到包含查詢字符串的URL(如示例所示)時,查詢字符串的鍵和值將在$_GET變量中可用。

$_QUERY_STRING可能是這個變量的一個更好的名稱。

它的作用略有不同。儘管POST方法不是唯一可以包含主體的方法(例如,PUT請求也可以),但一些測試顯示$_POST僅包含POST請求時的數據 - 在所有其他情況下爲空。

PHP沒有$_PUT變量用於PUT請求,可能because browsers only support GET and POST requests用於表單提交。相反,你可以使用file_get_contents("php://input")從輸入流PHP讀取,然後用str_parse()加載項和值作爲關聯數組:

parse_str(file_get_contents("php://input"), $data); 
+3

你爲什麼要這樣回答自己的問題? – OptimusCrime

+0

@OptimusCrime,因爲我已經知道了答案,並且我想與其他人分享;)[請參閱我能回答我自己的問題嗎?](https://stackoverflow.com/help/self-answer) –

+0

但是..這個問題已經被多次回答了? – OptimusCrime