簡單認識php://input、$_POST、$GLOBALS[‘HTTP_RAW_POST_DATA’]三者的區別

簡單認識php://input、$_POST、$GLOBALS['HTTP_RAW_POST_DATA']三者的區別

php://input

  1. 從使用結果看,php://input與$GLOBALS[‘HTTP_RAW_POST_DATA’]的功能是一樣的,但是,php://input需要的內存比較小,並且它不受 php.ini 配置文件的限制。
  1. 如果Coentent-Type的類型爲multipart/form-data,使用php://input和$GLOBALS[‘HTTP_RAW_POST_DATA’]是獲取不到數據的,除此之外,php://input都能獲取到數據。
  1. 僅當Coentent-Type的類型爲application/x-www.form-urlencoded時,使用php://input和$_POST獲取到的數據纔是一致的。
  1. 使用方式:使用file_get_contents(‘php://input’)獲取請求數據。

$_POST

只有Coentent-Type的值爲application/x-www.form-urlencoded和multipart/form-data兩種類型時,$_POST才能獲取到數據

$GLOBALS[‘HTTP_RAW_POST_DATA’]

如果php無法識別Coentent-Type類型,也就無法獲取請求數據,這個時候,可以用$GLOBALS[‘HTTP_RAW_POST_DATA’]來獲取

多種方案

$xml = isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : file_get_contents("php://input");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章