PHP獲取POST資料的3種方法
PHP如何獲取表單的POST資料呢?本文介紹3種獲取POST資料的方法,並將程式碼附上,希望可以幫助到你。
一、PHP獲取POST資料的幾種方法
方法1、最常見的方法是:$_POST['fieldname'];
說明:只能接收Content-Type: application/x-www-form-urlencoded提交的資料
解釋:也就是表單POST過來的資料
方法2、file_get_contents(“php://input”);
說明:
允許讀取 POST 的原始資料。
和 $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']中
二、演示
1、PHP 如何獲取POST過來的XML資料和解析XML資料
比如我們在開發微信企業號時,如何處理使用者回覆過來的資料呢?
文件:http://qydev.weixin.qq.com/wiki/index.php?title=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A%E6%B6%88%E6%81%AF
首先查閱文件,可知道:啟用開發模式後,當使用者給應用回覆資訊時,微信服務端會POST一串XML資料到已驗證的回撥URL
假設該URL為 http://www.xxx.com
Http請求方式: POST
http://www.xxx.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323
POST的XML內容為:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> <AgentID>1</AgentID> </xml>
那麼怎麼接收這段內容呃?
這時就可以用到:方法2(file_get_contents(“php://input”))、方法3($GLOBALS['HTTP_RAW_POST_DATA'])
方法2(file_get_contents(“php://input”)):
$input = file_get_contents("php://input"); //接收POST資料 $xml = simplexml_load_string($input); //提取POST資料為simplexml物件 var_dump($xml);
方法3($GLOBALS['HTTP_RAW_POST_DATA'])
$input = $GLOBALS['HTTP_RAW_POST_DATA']; libxml_disable_entity_loader(true); $xml = simplexml_load_string($input, 'SimpleXMLElement', LIBXML_NOCDATA); var_dump($xml);
PHP獲取POST資料的3種方法及其程式碼分析,希望可以幫到你。
相關文章
- React 中獲取資料的 3 種方法:哪種最好?React
- CodeIgniter3 獲取GET/POST/PUT/DELETE方法多種方式傳參delete
- 解決PHP Post獲取不到非表單資料的問題PHP
- Java獲取堆疊資訊的3種方法Java
- 獲取 Class 物件的 3 種方法物件
- php獲取網頁內容的三種方法PHP網頁
- php 模擬POST提交的2種方法PHP
- PHP 傳送GET 和 POST資料的方法分析PHP
- 127 PHP獲取網頁標題的3種實現方法程式碼例項PHP網頁
- PHP --反射 --獲取類的方法PHP反射
- PHP物件導向程式設計中獲取物件屬性的3種方法例項分析PHP物件程式設計
- jqGrid獲取json資料方法JSON
- 關於如何獲取資料的方法
- php一句話獲取獲取檔案目錄的方法PHP
- Javascript獲取原型的四種方法JavaScript原型
- PHP獲取HTTP body內容的方法PHPHTTP
- PHP 獲取檔案 副檔名 的常用方法小結【五種方式】PHP
- 一種獲取SAP HANA資料庫表條目數的另類方法資料庫
- PHP獲取檔案基本屬性的方法PHP
- 三種 Post 提交資料方式
- SQL Server在分頁獲取資料的同時獲取到總記錄數的兩種方法SQLServer
- vue3中獲取proxy包裹的資料Vue
- SpringBoot獲取HttpServletRequest的3種方式總結Spring BootHTTPServlet
- android獲取控制元件的幾種方法Android控制元件
- 7種Linux中獲取CPU速度的方法Linux
- 整理post提交資料的四種解析方式
- Python 爬取網頁資料的兩種方法Python網頁
- Java之獲取隨機數的4種方法Java隨機
- 獲取爬蟲動態IP的三種方法爬蟲
- Python3 - 獲取資料夾中的檔案列表Python
- PHP透過Modbus Tcp實時獲取裝置資料PHPTCP
- Java中獲取JAR檔案中資源路徑的三種方法JavaJAR
- 如何獲取想要的資料?
- 三種方法實現:獲取 url 中的引數
- python兩種獲取剪貼簿內容的方法Python
- Python獲取list中指定元素索引的兩種方法Python索引
- PHP中獲取當前頁面的各種URL格式PHP
- 大資料量獲取TopK的幾種方案大資料TopK
- 使用PHP獲取影像檔案的EXIF資訊PHP