##1. php://input 和$_POST和$GLOBALS['HTTP_RAW_POST_DATA']php
print_r($GLOBALS['HTTP_RAW_POST_DATA']); Notice: Undefined index: HTTP_RAW_POST_DATA in E:\www\test2\test.php on line 10 在php.ini裏設置,打開 php.ini 文件,搜索下就能夠找到。 always_populate_raw_post_data = On php 5.6 php.ini ; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is ; to disable this feature and it will be removed in a future version. ; If post reading is disabled through enable_post_data_reading, ; $HTTP_RAW_POST_DATA is *NOT* populated. ; http://php.net/always-populate-raw-post-data always_populate_raw_post_data = -1
##HTTP_RAW_POST_DATA在新版版本中廢棄了用這個代替php://input stream instead數組
Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_populate_raw_post_data' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0 Warning: Cannot modify header information - headers already sent in Unknown on line 0 name=123&password=adminname=123&password=admin
##http_raw_post_data 是PHP內置的一個全局變量。 它用於,app
PHP在沒法識別的Content-Type的狀況下,將POST過來的數據原樣地填入變量$http_raw_post_data。post
它沒法讀取Content-Type爲multipart/form-data的POST數據。this
須要設置php.ini中的always_populate_raw_post_data值爲On,PHP纔會總把POST數據填入變量$http_raw_post_data。編碼
以關聯數組方式組織提交的數據,並對此進行編碼處理,如urldecode,甚至編碼轉換;url
廢棄了.net
##php://input3d
1.php://input 沒法讀取到 表單類型爲 enctype=multipart/form-data的數據 2.而$GLOBALS['HTTP_RAW_POST_DATA']在PHP在沒法識別的 Content-Type的狀況下,將POST過來的數據原樣地填入變量$http_raw_post_data,可是也沒法讀取到Content- Type爲multipart/form-data的POST數據。 3.GET的數據他們三個(POST,INPUT ,HTTP_RAW_POST_DATA都拿不到)
$_POST:經過 HTTP POST 方法傳遞的變量組成的數組。是自動全局變量。code
$GLOBALS['HTTP_RAW_POST_DATA'] :老是產生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數據。此變量僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單數據不可用。
也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是同樣的。
可是若是post過來的數據不是PHP可以識別的,你能夠用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,好比 text/xml 或者 soap 等等。
$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單數據不可用。
補充說明:PHP默認識別的數據類型是application/x-www.form-urlencoded標準的數據類型。
php://input 容許讀取 POST 的原始數據。和 $HTTP_RAW_POST_DATA 比起來,它給內存帶來的壓力較小,而且不須要任何特殊的 php.ini 設置