首頁  >  文章  >  後端開發  >  php為什麼只能接受get 接受不到POST值

php為什麼只能接受get 接受不到POST值

小云云
小云云原創
2018-03-15 13:04:033205瀏覽

php通常使用get或post的值,這篇主要跟大家分享php為什麼只能接受get 接受不到POST值,希望能幫助大家。

一、PHP取得POST資料的幾種方法

#方法1、最常見的方法是:$_POST['fieldname'];

說明:只能接收Content-Type: application/x-www-form-urlencoded提交的資料
解釋:也就是表單POST過來的資料

方法2、file_get_contents("php://input");

#:
允許讀取POST 的原始資料。

(用介面測試工具的時候如果header 設定content-type: application/json 之類,只能用該方法。)
和$HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小,並且不需要任何特殊的php.ini 設定。
php://input 不能用於 enctype="multipart/form-data"。
解釋:
對於未指定 Content-Type 的POST數據,則可以使用file_get_contents(“php://input”);來取得原始資料。
事實上,用PHP接收POST的任何資料都可以使用本方法。而不用考慮Content-Type,包括二進位檔案流也可以。
所以用方法二是最保險的方法

方法3、$GLOBALS['HTTP_RAW_POST_DATA'];

說明:
總是產生$HTTP_RAW_POST_DATA  變數包含有原始的POST 資料。
此變數僅在碰到未識別 MIME 類型的資料時產生。
$HTTP_RAW_POST_DATA  對於enctype="multipart/form-data"  表單資料不可用
如果post過來的資料不是PHP能夠辨識的,可以用$GLOBALS['HTTP_RAW_POST_DATA']來接收,
例如text /xml 或soap 等等
解釋:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST過來的原始資料。
$_POST或$_REQUEST存放的是 PHP以key=>value的形式格式化以後的資料。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否儲存POST過來的資料取決於centent-Type的設置,即POST資料時必須明確示指明Content-Type: application/x-www-form-urlencoded,POST的資料才會存放到$GLOBALS['HTTP_RAW_POST_DATA']中。

相關推薦:

細說get與post之間的差異

#

以上是php為什麼只能接受get 接受不到POST值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn