国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:117日期:2022-06-13 17:26:57
目錄file_get_contents()php://input$http_raw_post_dataphp://input、$http_raw_post_data、$_POST、$_GET區別接收和發送XML的php示例php示例:接收XMLphp示例:發送xml

微信用戶和公眾號產生交互的過程中,用戶的某些操作會使得微信服務器通過事件推送的形式,通知到開發者在開發者中心處設置的服務器地址(回調url),從而開發者可以獲取到該信息。PHP中為什么會使用file_get_contents("php://input")來接收呢?為什么有些場景file_get_contents("php://input")會接收不到呢?

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

file_get_contents()

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

php://input

php://input 是個可以訪問請求的原始數據的只讀流。 POST 請求的情況下,最好使用 php://input 來代替 $HTTP_RAW_POST_DATA,因為它不依賴于特定的 php.ini 指令。 而且,這樣的情況下 $HTTP_RAW_POST_DATA 默認沒有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內存。 enctype="multipart/form-data" 的時候 php://input 是無效的。

php://input使用范圍

1、 讀取POST數據

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

$http_raw_post_data

$http_raw_post_data是PHP內置的一個全局變量。它用于,PHP在無法識別的Content-Type的情況下,將POST過來的數據原樣地填入變量$http_raw_post_data。它同樣無法讀取Content-Type為multipart/form-data的POST數據。需要設置php.ini中的always_populate_raw_post_data值為On,PHP才會總把POST數據填入變量$http_raw_post_data。

php://input、$http_raw_post_data、$_POST、$_GET區別

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

2、 POST提交時,Content- Type取值為application/x-www-form-urlencoded時,也指明了Content-Length的值,php會將http請求body相應數據會填入到數 組$_POST,填入到$_POST數組中的數據是進行urldecode()解析的結果。

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

接收和發送XML的php示例php示例:接收XML

接收xml數據,并轉化為array數組。

<?php$xmlData = file_get_contents('php://input');$obj = simplexml_load_string($xmlData,'SimpleXMLElement', LIBXML_NOCDATA);$json = json_decode(json_encode($obj),true);php示例:發送xml<?php$xml = '<xml>xmldata</xml>';//要發送的xml$url = 'http://***.php';//接收XML地址$header = 'Content-type: text/xml';//定義content-type為xml$ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_URL, $url);//設置鏈接curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//設置是否返回信息curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//設置HTTP頭curl_setopt($ch, CURLOPT_POST, 1);//設置為POST方式curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);//POST數據$response = curl_exec($ch);//接收返回信息if(curl_errno($ch)){//出錯則顯示錯誤信息 print curl_error($ch);}curl_close($ch); //關閉curl鏈接echo $response;//顯示返回信息?>

到此這篇關于PHP中為什么使用file_get_contents("php://input")接收微信通知的文章就介紹到這了,更多相關PHP中file_get_contents("php://input")接收微信通知內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: PHP
相關文章:
主站蜘蛛池模板: 亚洲第一se情网站 | 成人黄色毛片 | 亚洲一区中文字幕 | 国产成人高清一区二区私人 | 欧美另类 videos黑人极品 | 99国产在线播放 | 456亚洲视频 | 99久久99热精品免费观看国产 | 美女在线看永久免费网址 | 国内精品小视频在线 | 国产欧美一区二区精品性色 | 成人午夜影院 | 亚洲国产老鸭窝一区二区三区 | 欧美日韩在线视频免费完整 | 夜色伊人 | 国产欧美综合在线一区二区三区 | 亚洲精品推荐 | 久久国产精品久久久久久久久久 | 免费一级欧美毛片 | 精品欧美一区视频在线观看 | 国产www| 亚洲黄色官网 | 日韩激情中文字幕一区二区 | 国产美女视频做爰 | 在线亚洲精品中文字幕美乳 | 韩国毛片在线 | 男人的天堂久久香蕉国产 | 手机毛片 | 免费一区二区三区视频狠狠 | 国产日产精品_国产精品毛片 | 精品国产成人 | 亚洲精品久久久久午夜三 | 欧美自拍视频 | 成人第一页 | 精品一区二区三区在线视频 | 男女视频在线观看免费 | 亚洲欧美一区二区三区久本道 | 国产成人一区二区三区视频免费 | 中文字幕 亚洲一区 | 久久99精品久久久久久秒播 | 久久www免费人成_看片高清 |