我想了解原始發佈數據的含義。 $HTTP_RAW_POST_DATA
的PHP手冊頁只是說明此變量包含Raw POST data
。什麼是原始發佈數據
當這個變量將被設置,原始數據的含義是什麼?
我明白$_POST
但$HTTP_RAW_POST_DATA
我想了解原始發佈數據的含義。 $HTTP_RAW_POST_DATA
的PHP手冊頁只是說明此變量包含Raw POST data
。什麼是原始發佈數據
當這個變量將被設置,原始數據的含義是什麼?
我明白$_POST
但$HTTP_RAW_POST_DATA
HTTP請求由兩個部分組成。一組標題和一個正文。
頭文件包括像被請求的URL和緩存控制助手之類的東西(比如「我有一個來自昨天的版本,只給了我一個新的,如果有變化,好嗎?」)。
根據請求的類型,正文可能會或可能不會顯示。 POST請求包含正文。
身體可以採用客戶喜歡的任何格式。其中一個標題會告訴服務器格式是什麼。
HTML表單使用了幾種格式,PHP知道如何解析這些格式並將數據放入$_POST
。
如果數據是另一種格式,如JSON,或者如果數據不符合PHP的怪癖(例如具有相同名稱的密鑰末尾有[]
的規則),那麼您可能希望直接訪問數據,這樣你就可以自己解析它。
這是原始的POST數據。
乾淨的解釋! – Daric
HTTP完全糊塗是一種基於文本的協議,所以所有的數據作爲一個字符串傳遞。當您使用$_POST
時 - 您已經將處理的傳遞數據處理爲數組形式。這是在控制權傳遞給腳本之前由php自動完成的。
因此,在原始發佈數據中有一個數據,因爲它是通過網絡傳遞的。
可能你看到a=1&b=2
數據,你在URL中看到它
謝謝@zerkms。 – Daric
一個東西,你可以用http協議做是做,它發送一些文字回服務器POST請求。
$HTTP_RAW_POST_DATA
將包含該文本,不管它說什麼。
大多數情況下,當我們發送POST請求時,我們將在發送的文本中添加一個「內容類型」。這告訴服務器它是什麼類型的內容。大部分時間在網絡上,我們發送內容類型爲'application/x-www-form-urlencoded'。
當服務器接收與該內容類型標記物的POST請求時,服務器將知道力圖把數據轉換成$_POST
陣列,使得「測試=你好」變爲:
$_POST['test']='hello'
$_POST
可以是說,與分裂$HTTP_RAW_POST_DATA
後的結果,PHP分割原始數據後和格式在我們看到它在$_POST
例如方式:
$HTTP_RAW_POST_DATA
看起來像這樣
key1=value1&key2=value2
$_POST
然後看起來像這樣:
$_POST = array(
"key1" => "value1",
"key2" => "value2",);
$HTTP_RAW_POST_DATA
包含像原始POST數據如下:
一般來說,php://input
應該代替$HTTP_RAW_POST_DATA.
因爲從PHP 5.6.0開始,此功能已被拒絕。依靠這個功能是非常不鼓勵的。
你試過看看那裏有什麼嗎? 'var_dump($ HTTP_RAW_POST_DATA);''或者甚至更好'var_dump(file_get_contents(「php:// input」));' – zerkms
@zerkms:是的,它是'NULL'。我試了兩個和輸出是'NULL','string(0)「''分別 – Daric
http://stackoverflow.com/questions/3173547/whats-the-difference-between-post-and-raw-post-in- php-at-all –