咨詢電話:023-6276-4481
熱門文章
電 話:023-6276-4481
郵箱:broiling@qq.com
地址:重慶市南岸區(qū)亞太商谷6幢25-2
$POST
$_POST是我們最常用的獲取POST數(shù)據(jù)的方式,它是以關(guān)聯(lián)數(shù)組方式組織提交的數(shù)據(jù),并對此進(jìn)行編碼處理,如urldecode,甚至編碼轉(zhuǎn)換,識別的數(shù)據(jù)類型是PHP默認(rèn)識別的數(shù)據(jù)類型 application/x-www-form-urlencoded
無法解析如text/xml,application/json等非 application/x-www-form-urlencoded 數(shù)據(jù)類型的內(nèi)容
HTTP_RAW_POST_DATA
前面說過PHP默認(rèn)識別的數(shù)據(jù)類型是application/x-www-form-urlencoded,用Content-Type=application/json 類型,提交的POST數(shù)據(jù)這時候 $_POST 就無法獲取到了,但是使用 $GLOBALS['HTTP_RAW_POST_DATA'] 可以獲取到。因為在PHP無法識別Content-Type的時候,就會把 POST 數(shù)據(jù)填入到 $HTTP_RAW_POST_DATA 中。
需要設(shè)置 php.ini 中的 always_populate_raw_post_data 值為 On 才會生效
當(dāng)$_POST 與 php://input可以取到值時 $HTTP_RAW_POST_DATA 為空
不能用于 enctype="multipart/form-data"
PHP7中已經(jīng)移除了這個全局變量,用 php://input 替代
php://input
php://input 可通過輸入流以文件讀取方式取得未經(jīng)處理的POST原始數(shù)據(jù),允許讀取 POST 的原始數(shù)據(jù)。和 $HTTP_RAW_POST_DATA 比起來,它給內(nèi)存帶來的壓力較小。
不需要任何特殊的 php.ini 設(shè)置
不能用于 enctype="multipart/form-data"
小結(jié)
上面了介紹了一下我們目前使用PHP獲取POST數(shù)據(jù)的三種方式,當(dāng)我們以后使用PHP來獲取POST數(shù)據(jù)的時候用$_POST或者php://input就好了。雖然HTTP_RAW_POST_DATA可以達(dá)到和php://input一樣的目的,但是會給內(nèi)存帶來較大的壓力,官方也注意到了這個問題,所以在PHP7就果斷移除了這個不好用的東東。。。