2016-04-15 46 views
0

對於使用GET請求,我們可以查詢字符串轉換成串串,

parse_str($_SERVER['QUERY_STRING']); 

但對於POST方法上面的方法不起作用。是否有另一種方法可以對字符串進行後期查詢。

+2

POST數據在'$ _POST'中。 – paskl

+1

'json_encode($ _ REQUEST)'會讓你獲得json序列化的get,post和cookie參數。 –

+0

@vp_arth http://stackoverflow.com/a/2143042/208809 – Gordon

回答

1

除非您從命令行運行PHP,否則PHP將使用解析的查詢值和相應的帖子正文值來填充superglobal arrays$_GET$_POST(以及其他)。它會自動執行此操作,所以沒有任何理由說明爲什麼你會在查詢字符串上顯示parse_str

使用application/x-www-form-urlencodedmultipart/form-data或作爲在請求中的HTTP內容類型時引用傳遞給經由HTTP POST方法的當前腳本變量的PHP Manual for $_POST

的數組。

這是訪問POST數據的首選方式。但是,您也可以訪問原始文章主體via the php://input stream or $HTTP_RAW_POST_DATA(後者在PHP 5.6.0中已棄用,並且從PHP 7.0.0起刪除)。

引述PHP Manual on input streams

php://input是一個只讀流,允許你從請求主體讀的原始數據。在POST請求的情況下,最好使用php://input而不是$HTTP_RAW_POST_DATA,因爲它不依賴於特殊的php.ini指令。此外,對於默認情況下未填充$HTTP_RAW_POST_DATA的情況,這是激活always_populate_raw_post_data的潛在更少內存密集型替代方案。 php://input不適用於enctype="multipart/form-data"