$_POST,$HTTP_RAW_POST_DATA,php://input
$POST
$_POST
是我們最常用的獲取POST資料的方式,它是以關聯陣列方式組織提交的資料,並對此進行編碼處理,如urldecode
,甚至編碼轉換,識別的資料型別是PHP預設識別的資料型別 application/x-www.form-urlencoded
無法解析如text/xml,application/json
等非 application/x-www.form-urlencoded
資料型別的內容
HTTP_RAW_POST_DATA
前面說過PHP預設識別的資料型別是application/x-www.form-urlencoded
,用Content-Type=application/json
型別,提交的POST資料這時候 $_POST
就無法獲取到了,但是使用 $GLOBALS['HTTP_RAW_POST_DATA']
可以獲取到。因為在PHP無法識別Content-Type的時候,就會把 POST 資料填入到
$HTTP_RAW_POST_DATA `中。
需要設定 php.ini 中的
always_populate_raw_post_data
值為 On 才會生效當
$_POST
與php://input
可以取到值時$HTTP_RAW_POST_DATA
為空不能用於
enctype="multipart/form-data"
PHP7中已經移除了這個全域性變數,用
php://input
替代
php://input
php://input
可通過輸入流以檔案讀取方式取得未經處理的POST原始資料,允許讀取 POST 的原始資料。和 $HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小。
不需要任何特殊的 php.ini 設定
不能用於
enctype="multipart/form-data"
小結
上面了介紹了一下我們目前使用PHP獲取POST資料的三種方式,當我們以後使用PHP來獲取POST資料的時候用$_POST或者php://input
就好了。雖然HTTP_RAW_POST_DATA
可以達到和php://input
一樣的目的,但是會給記憶體帶來較大的壓力,官方也注意到了這個問題,所以在PHP7就果斷移除了這個不好用的東東。。。
相關文章
- $POST 、$HTTP_RAW_POST_DATA、php://input三者之間的區別HTTPPHP
- **對比$_POST、$GLOBALS['HTTP_RAW_POST_DATA']和file_get_contents('php://input')HTTPPHP
- undefinedindex:HTTP_RAW_POST_DATAUndefinedIndexHTTP
- $GLOBALS['HTTP_RAW_POST_DATA']和$_POST的區別HTTP
- 深入剖析PHP輸入流php://input(與POST/GET的區別)PHP
- 一文搞懂 $_POST 和 file_get_contents ("PHP://input") 的區別PHP
- PHP中GET與POST變數PHP變數
- PHP傳送和接收POST資料PHP
- PHP傳送POST和GET請求PHP
- php基礎知識之$GET$POSTPHP
- 【PHP】CI框架原始碼分析核心檔案之Input.phpPHP框架原始碼
- php 模擬POST提交的2種方法PHP
- php 利用socket傳送GET,POST請求PHP
- php4 - POST檔案大小的限制PHP
- PHP獲取POST資料的3種方法PHP
- PHP最大表單提交限制max_input_varsPHP
- [PHP]不同作業系統下PHP接收POST資料問題 (轉)PHP作業系統
- PHP實現BitMEX API POST方式委託掛單PHPAPI
- PHP 傳送GET 和 POST資料的方法分析PHP
- cURL實現傳送Get和Post請求(PHP)PHP
- php給$_POST賦值會導致值為空PHP賦值
- PHP中使用cURL實現Get和Post請求PHP
- apache PHP 隱藏 index.php 報錯 No input file specified. 解決辦法ApachePHPIndex
- $(":input")和$("input")區別
- php中$_REQUEST、$_POST、$_GET的區別和聯絡小結PHP
- 三種方法教你如何用PHP模擬post提交資料PHP
- atitit.http get post的原理以及框架實現java phpHTTP框架JavaPHP
- delete input 與 delete all inputdelete
- POST
- PHP與Curl採用的GET,POST,JSON方式請求APIPHPJSONAPI
- Php通過curl提交post內容為Json的請求PHPJSON
- input
- Nginx執行php,顯示“No input file specified. ”的處理方法NginxPHP
- Python -- raw_input() and input() -- ACMPythonACM
- 解決PHP Post獲取不到非表單資料的問題PHP
- 網站執行PHP出現No input file specified 的解決辦法網站PHP
- jquery 中$("form :input") $("form input") 區別jQueryORM
- raw_input() 與 input()的區別