欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP中為什么使用file_get_contents("php://input")接收微信通知

 更新時(shí)間:2023年07月01日 10:36:56   投稿:yin  
微信用戶和公眾號(hào)產(chǎn)生交互的過(guò)程中,用戶的某些操作會(huì)使得微信服務(wù)器事件推送,通知到開發(fā)者中心設(shè)置的服務(wù)器地址(回調(diào)url),開發(fā)者可以獲取到該信息。PHP中為什么使用file_get_contents("php://input")來(lái)接收呢?為什么有些場(chǎng)景php://input接收不到?

微信用戶和公眾號(hào)產(chǎn)生交互的過(guò)程中,用戶的某些操作會(huì)使得微信服務(wù)器通過(guò)事件推送的形式,通知到開發(fā)者在開發(fā)者中心處設(shè)置的服務(wù)器地址(回調(diào)url),從而開發(fā)者可以獲取到該信息。PHP中為什么會(huì)使用file_get_contents("php://input")來(lái)接收呢?為什么有些場(chǎng)景file_get_contents("php://input")會(huì)接收不到呢?

php用file_get_contents("php://input")或者$HTTP_RAW_POST_DATA可以接收xml數(shù)據(jù),

file_get_contents()

file_get_contents() 函數(shù)把整個(gè)文件讀入一個(gè)字符串中。

php://input

php://input 是個(gè)可以訪問請(qǐng)求的原始數(shù)據(jù)的只讀流。 POST 請(qǐng)求的情況下,最好使用 php://input 來(lái)代替 $HTTP_RAW_POST_DATA,因?yàn)樗灰蕾囉谔囟ǖ?php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 默認(rèn)沒有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內(nèi)存。 enctype="multipart/form-data" 的時(shí)候 php://input 是無(wú)效的。

php://input使用范圍

1、 讀取POST數(shù)據(jù)

2、不能用于multipart/form-data類型

$http_raw_post_data

$http_raw_post_data是PHP內(nèi)置的一個(gè)全局變量。它用于,PHP在無(wú)法識(shí)別的Content-Type的情況下,將POST過(guò)來(lái)的數(shù)據(jù)原樣地填入變量$http_raw_post_data。它同樣無(wú)法讀取Content-Type為multipart/form-data的POST數(shù)據(jù)。需要設(shè)置php.ini中的always_populate_raw_post_data值為On,PHP才會(huì)總把POST數(shù)據(jù)填入變量$http_raw_post_data。

php://input、$http_raw_post_data、$_POST、$_GET區(qū)別

1、GET提交時(shí),不會(huì)指定Content-Type和Content-Length,它表示http請(qǐng)求body中的數(shù)據(jù)是使用http的post方法提交的表單數(shù)據(jù),并且進(jìn)行了urlencode()處理。

2、 POST提交時(shí),Content- Type取值為application/x-www-form-urlencoded時(shí),也指明了Content-Length的值,php會(huì)將http請(qǐng)求body相應(yīng)數(shù)據(jù)會(huì)填入到數(shù) 組$_POST,填入到$_POST數(shù)組中的數(shù)據(jù)是進(jìn)行urldecode()解析的結(jié)果。

3、php://input數(shù)據(jù),只要Content-Type不為 multipart/form-data(該條件限制稍后會(huì)介紹)。那么php://input數(shù)據(jù)與http entity body部分?jǐn)?shù)據(jù)是一致的。該部分相一致的數(shù)據(jù)的長(zhǎng)度由Content-Length指定。 
4、僅當(dāng)Content-Type為application/x-www-form-urlencoded且提交方法是POST方法時(shí),$_POST數(shù)據(jù)與php://input數(shù)據(jù)才是”一致”(打上引號(hào),表示它們格式不一致,內(nèi)容一致)的。其它情況,它們都不一致。 
5、php://input讀取不到$_GET數(shù)據(jù)。是因?yàn)?_GET數(shù)據(jù)作為query_path寫在http請(qǐng)求頭部(header)的PATH字段,而不是寫在http請(qǐng)求的body部分。

接收和發(fā)送XML的php示例

php示例:接收XML

接收xml數(shù)據(jù),并轉(zhuǎn)化為array數(shù)組。

<?php
$xmlData = file_get_contents("php://input");
$obj = simplexml_load_string($xmlData,"SimpleXMLElement", LIBXML_NOCDATA);
$json = json_decode(json_encode($obj),true);

php示例:發(fā)送xml

<?php
$xml = '<xml>xmldata</xml>';//要發(fā)送的xml
$url = 'http://***.php';//接收XML地址
$header = 'Content-type: text/xml';//定義content-type為xml
$ch = curl_init(); //初始化
curl curl_setopt($ch, CURLOPT_URL, $url);//設(shè)置鏈接
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//設(shè)置是否返回信息
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//設(shè)置HTTP頭
curl_setopt($ch, CURLOPT_POST, 1);//設(shè)置為POST方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);//POST數(shù)據(jù)
$response = curl_exec($ch);//接收返回信息
if(curl_errno($ch)){//出錯(cuò)則顯示錯(cuò)誤信息
    print curl_error($ch);
}
curl_close($ch); //關(guān)閉curl鏈接
echo $response;//顯示返回信息
?>

到此這篇關(guān)于PHP中為什么使用file_get_contents("php://input")接收微信通知的文章就介紹到這了,更多相關(guān)PHP中file_get_contents("php://input")接收微信通知內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PHP切割整數(shù)工具類似微信紅包金額分配的思路詳解

    PHP切割整數(shù)工具類似微信紅包金額分配的思路詳解

    這篇文章主要介紹了 PHP切割整數(shù)工具類似微信紅包金額分配的思路詳解,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Zend Framework過(guò)濾器Zend_Filter用法詳解

    Zend Framework過(guò)濾器Zend_Filter用法詳解

    這篇文章主要介紹了Zend Framework過(guò)濾器Zend_Filter用法,結(jié)合實(shí)例形式分析了過(guò)濾器Zend_Filter的功能、原理、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • PHP 類與構(gòu)造函數(shù)解析

    PHP 類與構(gòu)造函數(shù)解析

    這篇文章給大家介紹了php類與構(gòu)造函數(shù)解析,包括類的創(chuàng)建,字段與方法,構(gòu)造函數(shù)等方面的內(nèi)容,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-02-02
  • php中通過(guò)smtp發(fā)郵件的類,測(cè)試通過(guò)

    php中通過(guò)smtp發(fā)郵件的類,測(cè)試通過(guò)

    php中通過(guò)smtp發(fā)郵件的類,測(cè)試通過(guò)...
    2007-01-01
  • PHP實(shí)現(xiàn)兩種排課方式

    PHP實(shí)現(xiàn)兩種排課方式

    這篇文章主要介紹了PHP實(shí)現(xiàn)兩種排課方式,第一種排課方式比較好理解,開始時(shí)間和結(jié)束時(shí)間,第二種比較復(fù)雜一些,有開始上課時(shí)間和結(jié)束上課時(shí)間和第幾周,具體實(shí)現(xiàn)代碼參考下本文
    2021-06-06
  • 搭建PhpStorm+PhpStudy開發(fā)環(huán)境的超詳細(xì)教程

    搭建PhpStorm+PhpStudy開發(fā)環(huán)境的超詳細(xì)教程

    這篇文章主要介紹了搭建PhpStorm+PhpStudy開發(fā)環(huán)境的超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Laravel 5框架學(xué)習(xí)之子視圖和表單復(fù)用

    Laravel 5框架學(xué)習(xí)之子視圖和表單復(fù)用

    本文給大家主要介紹的是Laravel5框架中的子視圖以及表單復(fù)用的用法,十分的細(xì)致全面,對(duì)于大家熟練掌握Laravel5框架非常有幫助,有需要的小伙伴可以參考下
    2015-04-04
  • Yii2中的場(chǎng)景(scenario)和驗(yàn)證規(guī)則(rule)詳解

    Yii2中的場(chǎng)景(scenario)和驗(yàn)證規(guī)則(rule)詳解

    Yii2的rule用于對(duì)模型屬性進(jìn)行驗(yàn)證,scenario用戶定義不同場(chǎng)景下需要驗(yàn)證的模型,下面這篇文章主要給大家介紹了關(guān)于Yii2中場(chǎng)景(scenario)和驗(yàn)證規(guī)則(rule)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-01-01
  • ThinkPHP利用PHPMailer實(shí)現(xiàn)郵件發(fā)送實(shí)現(xiàn)代碼

    ThinkPHP利用PHPMailer實(shí)現(xiàn)郵件發(fā)送實(shí)現(xiàn)代碼

    本文章介紹了關(guān)于在thinkphp中利用了phpmailer來(lái)實(shí)現(xiàn)郵件發(fā)送的詳細(xì)教程,有需要的朋友可以參考一下
    2013-09-09
  • PHP設(shè)計(jì)模式之適配器模式代碼實(shí)例

    PHP設(shè)計(jì)模式之適配器模式代碼實(shí)例

    這篇文章主要介紹了PHP設(shè)計(jì)模式之適配器模式代碼實(shí)例,本文講解了目標(biāo)、角色、應(yīng)用場(chǎng)景、優(yōu)勢(shì)等內(nèi)容,并給出代碼實(shí)例,需要的朋友可以參考下
    2015-05-05

最新評(píng)論