$POST 、$HTTP_RAW_POST_DATA、php://input三者之間的區別
$POST 、$HTTP_RAW_POST_DATA、php://input三者之間的區別
總是產生變數包含有原始的 POST 資料。否則,此變數僅在碰到未識別 MIME 型別的資料時產生。不過,訪問原始 POST 資料的更好方法是 php://input。$HTTP_RAW_POST_DATA 對於 enctype="multipart/form-data" 表單資料不可用。
問題: $HTTP_RAW_POST_DATA == $_POST 嗎? --->答案是為否。
個人理解總結是這麼玩的:
1:$POST我們常用的就不用介紹了吧
2:$GLOBALS['HTTP_RAW_POST_DATA']:
基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過來的資料不是PHP能夠識別的,你可以用$GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等。
PHP預設識別的資料型別是application/x-www.form-urlencoded標準的資料型別,用Content-Type=text/xml 型別,提交一個xml文件內容給了php server,要怎麼獲得這個POST資料。
由於PHP預設只識別application/x-www.form-urlencoded標準的資料型別,因此,對型如text/xml的內容無法解析為$_POST陣列,故保留原型,交給$GLOBALS['HTTP_RAW_POST_DATA'] 來接收。
3:php://input 也可以實現此這個功能:
php://input 允許讀取 POST 的原始資料。和 $HTTP_RAW_POST_DATA 比起來,它給記憶體帶來的壓力較小,並且不需要任何特殊的 php.ini 設定。php://input 不能用於 enctype="multipart/form-data"。
例子:
leyangjun.html
<form action="leyangjun.php" method="post">
<p>First name: <input type="text" name="fname" /></p>
<p>Last name: <input type="text" name="lname" /></p>
<input type="submit" value="Submit" />
</form>
leyangjun.php:
<?php
echo "<pre>";
print_r($_POST);
$data = file_get_contents('php://input'); //都要解下碼
print_r(urldecode($data));
echo "<br>";
print_r(urldecode($GLOBALS['HTTP_RAW_POST_DATA']));
?>
相關文章
- 一文搞懂 $_POST 和 file_get_contents ("PHP://input") 的區別PHP
- HTTPS、SSL、TLS三者之間的聯絡和區別HTTPTLS
- 面試之 get 和 post 區別面試
- http請求之get和post的區別HTTP
- Python中read()、readline()和readlines()三者間的區別和用法Python
- GET和POST的區別?
- POST 和 GET 的區別
- post與get的區別
- GET 與 POST 的區別
- GET和POST的區別
- get與post的區別?
- GET 和 POST 的區別
- (第二講)Spring&Spring MVC&Spring Boot三者之間的區別與聯絡MVCSpring Boot
- Java 之String、StringBuffer 和 StringBuilder 三者區別介紹JavaUI
- 微信小程式、微店、門店小程式三者之間有什麼區別微信小程式
- http和https的區別/get和post的區別HTTP
- GET與POST的真正區別
- post、get的區別總結
- GET與POST區別
- get和post區別
- Token ,Cookie、Session 三者區別CookieSession
- @ApiParam @PathVariable @RequestParam三者區別API
- 物件儲存、檔案儲存、塊儲存這三者之間有什麼區別?物件
- Oracle與OpenJDK之間的區別OracleJDK
- @Bean和@Component之間的區別?Bean
- GCD與NSOperation之間的區別GC
- select、poll、epoll之間的區別
- querySelector和getElementById之間的區別
- 敏捷和 Scrum 之間的區別敏捷Scrum
- PHP 中的陣列相加操作以及與 array_merge 之間的區別PHP陣列
- Python2 中 input() 和 raw_input() 的區別Python
- View—requestLayout、invalidate 和 postInvalidate 三者的區別View
- <button>和<input type=“button“> 的區別
- get與post的請求區別
- get與post的區別總結
- Java中的String,StringBuilder,StringBuffer三者的區別JavaUI
- js框架---angular、vue、react的三者的區別?JS框架AngularVueReact
- input與change事件區別事件
- MVC,MVP和MVVM之間的區別MVCMVPMVVM