溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中怎么獲取POST數(shù)據(jù)

發(fā)布時間:2021-06-30 16:31:47 來源:億速云 閱讀:124 作者:Leah 欄目:編程語言

PHP中怎么獲取POST數(shù)據(jù),針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

PHP獲取POST數(shù)據(jù)有幾種方法

  方法1、最常見的方法是:$_POST['fieldname'];

  說明:只能接收Content-Type:application/x-www-form-urlencoded提交的數(shù)據(jù)

  解釋:也就是表單POST過來的數(shù)據(jù)

  方法2、file_get_contents(“php://input”);

  說明:

  允許讀取POST的原始數(shù)據(jù)。

  和$HTTP_RAW_POST_DATA比起來,它給內(nèi)存帶來的壓力較小,并且不需要任何特殊的php.ini設(shè)置。

  php://input不能用于enctype=”multipart/form-data”。

  解釋:

  對于未指定Content-Type的POST數(shù)據(jù),則可以使用file_get_contents(“php://input”);來獲取原始數(shù)據(jù)。

  事實上,用PHP接收POST的任何數(shù)據(jù)都可以使用本方法。而不用考慮Content-Type,包括二進制文件流也可以。

  所以用方法二是最保險的方法

  方法3、$GLOBALS['HTTP_RAW_POST_DATA'];

  說明:

  總是產(chǎn)生$HTTP_RAW_POST_DATA變量包含有原始的POST數(shù)據(jù)。

  此變量僅在碰到未識別MIME類型的數(shù)據(jù)時產(chǎn)生。

  $HTTP_RAW_POST_DATA對于enctype=”multipart/form-data”表單數(shù)據(jù)不可用

  假如post過來的數(shù)據(jù)不是PHP能夠識別的,可以用$GLOBALS['HTTP_RAW_POST_DATA']來接收,

  比如text/xml或者soap等等

  解釋:

  $GLOBALS['HTTP_RAW_POST_DATA']存放的是POST過來的原始數(shù)據(jù)。

  $_POST或$_REQUEST存放的是PHP以key=>value的形式格式化以后的數(shù)據(jù)。

  但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST過來的數(shù)據(jù)取決于centent-Type的設(shè)置,即POST數(shù)據(jù)時必須顯式示指明Content-Type:application/x-www-form-urlencoded,POST的數(shù)據(jù)才會存放到$GLOBALS['HTTP_RAW_POST_DATA']中。

  PHP獲取POST數(shù)據(jù)代碼是什么

  1、PHP如何獲取POST過來的XML數(shù)據(jù)和解析XML數(shù)據(jù)

  比如我們在開發(fā)微信企業(yè)號時,如何處理用戶回復(fù)過來的數(shù)據(jù)呢?

  文檔:http://qydev.weixin.qq.com/wiki/index.phptitle=%E6%8E%A5%E6%94%B6%E6%99%AE%E9%80%9A%E6%B6%88%E6%81%AF

  首先查閱文檔,可知道:啟用開發(fā)模式后,當(dāng)用戶給應(yīng)用回復(fù)信息時,微信服務(wù)端會POST一串XML數(shù)據(jù)到已驗證的回調(diào)URL

  假設(shè)該URL為http://www.xxx.com

  Http請求方式:POST

  http://www.xxx.com/msg_signature=ASDFQWEXZCVAQFASDFASDFSS×tamp=13500001234&nonce=123412323

  POST的XML內(nèi)容為:

  那么怎么接收這段內(nèi)容呃?

  這時就可以用到:方法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數(shù)據(jù)

  $xml=simplexml_load_string($input);//提取POST數(shù)據(jù)為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);

關(guān)于PHP中怎么獲取POST數(shù)據(jù)問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI