亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 建站經驗 > 正文

PHP微信開發之微信消息自動回復下所遇到的坑

2024-04-25 20:16:34
字體:
來源:轉載
供稿:網友

這篇文章是小編給大家介紹的微信消息自動回復下所遇到的坑的相關內容,在日常項目開發中經常遇到,非常具有參考借鑒價值,感興趣的小伙伴一起學習吧

微信回復原理:

當普通微信用戶向公眾賬號發送消息時,微信服務器首先收到用戶發送的消息;

然后將用戶信息和消息打包成XML格式的數據包,再將這個XML數據包通過POST方法提交到開發者設置的URL上。

疑問一:為何使用$GLOBALS["HTTP_RAW_POST_DATA"]保存POST過來的數據,而非$_POST數組?

回答:

POST只能保存標準的數據類型,對于XML、SOAP或Application/Octet-steam之類的內容則無法解析。

而$GLOBALS["HTTP_RAW_POST_DATA"]和$_POST是一樣的,如果POST過來的數據PHP能夠識別,則可以用$GLOBALS["HTTP_RAW_POST_DATA"]來接收。

疑問二:simplexml_load_file()各參數和返回值是什么?

回答:

參數含義

string:需要處理的XML字符串。

class:用來指定新對象,通常設置為"SimpleXMLElement",生成一個簡單XML元素的類。

options:指定附加的Libxml參數,通常設置為常量LIBXML_NOCDATA,表示把CDATA設置為文本節點。

ns:一般省略

is_prefix:一般省略

函數執行完成后返回SimpleXMLElement類的一個對象。

功能:公眾號只接受文字消息,且做出相應的文字回復。

  1. <span style="font-family:Courier New;font-size:14px;"><?php  
  2. define("TOKEN","weixin");  
  3. $weixinObj = new Wechat();  
  4. $weixinObj->valid();  
  5. class Wechat{  
  6. public function valid(){  
  7. $echoStr = $_GET['echostr'];  
  8. //如果是第一次接入  
  9. if($this->checkSignature() && $echoStr ){  
  10. echo $echoStr;  
  11. exit;  
  12. }else{  
  13. $this->responseMsg();  
  14. }  
  15. }  
  16. //校驗方法  
  17. private function checkSignature(){  
  18. $signature = $_GET['signature'];  
  19. $timestamp = $_GET['timestamp'];  
  20. $nonce = $_GET['nonce'];  
  21. $token = TOKEN;  
  22. $tmpArr = array($token$timestamp$nonce);  
  23. sort($tmpArr);  
  24. $tmpStr = implode($tmpArr);  
  25. $tmpStr = sha1($tmpStr);  
  26. if($tmpStr == $signature){  
  27. return true;  
  28. }else{  
  29. return false;  
  30. }  
  31. }  
  32. /* 普通文本消息  
  33. <xml>  
  34. <ToUserName><![CDATA[toUser]]></ToUserName>  
  35. <FromUserName><![CDATA[fromUser]]></FromUserName>  
  36. <CreateTime>1348831860</CreateTime>  
  37. <MsgType><![CDATA[text]]></MsgType>  
  38. <Content><![CDATA[this is a test]]></Content>  
  39. </xml>  
  40. */ 
  41. public function responseMsg(){  
  42. //獲取微信服務器POST請求中的數據  
  43. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  
  44. if( !emptyempty($postStr) ){  
  45. $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA);  
  46. $fromUser = $postObj->FromUserName;  
  47. $toUser = $postObj->ToUserName;  
  48. $keyword = trim($postObj->Content);  
  49. $time = time();  
  50. $template = "<xml>  
  51. <ToUserName><![CDATA[%s]]></ToUserName>  
  52. <FromUserName><![CDATA[%s]]></FromUserName>  
  53. <CreateTime>%s</CreateTime>  
  54. <MsgType><![CDATA[%s]]></MsgType>  
  55. <Content><![CDATA[%s]]></Content>  
  56. </xml>";  
  57. ifstrtolower($postObj->MsgType)!='text' ){  
  58. $msgType = "text";  
  59. $content = "我只接受文本消息";  
  60. }else{  
  61. $msgType = "text";  
  62. if( !emptyempty($keyword) ){  
  63. $content = "您發送的消息是:".$postObj->Content;  
  64. }else{  
  65. $content = "請輸入關鍵字";//消息為空  
  66. }  
  67. }  
  68. $info = sprintf($template$fromUser$toUser$time$msgType$content);  
  69. echo $info;  
  70. }else{  
  71. echo "";  
  72. exit;  
  73. }  
  74. }  
  75. }</span> 

功能:公眾號只接受圖片消息,且做出相應的文字回復。

  1. <span style="font-family:Courier New;font-size:14px;"><?php  
  2. define("TOKEN","weixin");  
  3. $weixinObj = new Wechat();  
  4. $weixinObj->valid();  
  5. class Wechat{  
  6. public function valid(){  
  7. $echoStr = $_GET['echostr'];  
  8. //如果是第一次接入  
  9. if($this->checkSignature() && $echoStr ){  
  10. echo $echoStr;  
  11. exit;  
  12. }else{  
  13. $this->responseMsg();  
  14. }  
  15. }  
  16. //校驗方法  
  17. private function checkSignature(){  
  18. $signature = $_GET['signature'];  
  19. $timestamp = $_GET['timestamp'];  
  20. $nonce = $_GET['nonce'];  
  21. $token = TOKEN;  
  22. $tmpArr = array($token$timestamp$nonce);  
  23. sort($tmpArr);  
  24. $tmpStr = implode($tmpArr);  
  25. $tmpStr = sha1($tmpStr);  
  26. if($tmpStr == $signature){  
  27. return true;  
  28. }else{  
  29. return false;  
  30. }  
  31. }  
  32. /* 接收圖片消息格式  
  33. <xml>  
  34. <ToUserName><![CDATA[toUser]]></ToUserName>  
  35. <FromUserName><![CDATA[fromUser]]></FromUserName>  
  36. <CreateTime>1348831860</CreateTime>  
  37. <MsgType><![CDATA[image]]></MsgType>  
  38. <PicUrl><![CDATA[this is a url]]></PicUrl>  
  39. <MediaId><![CDATA[media_id]]></MediaId>  
  40. <MsgId>1234567890123456</MsgId>  
  41. </xml>  
  42. */ 
  43. public function responseMsg(){  
  44. //獲取微信服務器POST請求中的數據  
  45. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  
  46. if( !emptyempty($postStr) ){  
  47. $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA);  
  48. $fromUser = $postObj->FromUserName;  
  49. $toUser = $postObj->ToUserName;  
  50. $time = time();  
  51. $msgType$postObj->MsgType;  
  52. $picUrl = $postObj->PicUrl;  
  53. $mediaId = $postObj->MediaId;  
  54. $template = "<xml>  
  55. <ToUserName><![CDATA[%s]]></ToUserName>  
  56. <FromUserName><![CDATA[%s]]></FromUserName>  
  57. <CreateTime>%s</CreateTime>  
  58. <MsgType><![CDATA[%s]]></MsgType>  
  59. <Content><![CDATA[%s]]></Content>  
  60. </xml>";  
  61. ifstrtolower($msgType)!='image' ){  
  62. $msgType = "text";  
  63. $content = "我只接受圖片消息";  
  64. }else{  
  65. $msgType = "text";  
  66. if( !emptyempty$picUrl ) ){  
  67. $content = "圖片鏈接為:".$picUrl."/n";  
  68. $content .= "媒體id:".$mediaId;  
  69. }else{  
  70. $content = "請發送圖片";//消息為空  
  71. }  
  72. }  
  73. $info = sprintf($template$fromUser$toUser$time$msgType$content);  
  74. echo $info;  
  75. }else{  
  76. echo "";  
  77. exit;  
  78. }  
  79. }  
  80. }</span> 

以上是小編給大家分享的微信消息自動回復下所遇到的坑的相關知識,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产69精品久久久久9| 色哟哟网站入口亚洲精品| 亚洲激情成人网| 成人字幕网zmw| 欧美极品欧美精品欧美视频| 一区国产精品视频| 日本精品久久电影| 久久久在线免费观看| 国产精品女人久久久久久| 亚洲四色影视在线观看| 久久久爽爽爽美女图片| 在线视频中文亚洲| 色综合天天综合网国产成人网| 亚洲精品有码在线| 91超碰中文字幕久久精品| 一区二区欧美在线| 久久久www成人免费精品张筱雨| 日韩精品免费在线视频| 欧美一级bbbbb性bbbb喷潮片| 尤物yw午夜国产精品视频| 夜夜嗨av色一区二区不卡| 一区二区三区视频免费| 国产91精品久| 高清日韩电视剧大全免费播放在线观看| 久久久久久久久久av| 亚洲精品久久久久久久久久久久久| 国产精品黄色影片导航在线观看| 136fldh精品导航福利| 国产精品一区二区电影| 亚洲成人网在线| 国产欧美一区二区三区在线看| 久久免费视频在线| 国产日韩欧美中文| 欧美激情视频三区| 成人免费视频a| 久久久久久久久久国产| 中文字幕亚洲一区| 精品久久久久久久久久久久久| 亚洲黄色av女优在线观看| 国产精品美女主播在线观看纯欲| 欧美裸体xxxx极品少妇| 国产一区二区三区欧美| 亚洲人成网7777777国产| 国产成人精品视频在线| 成人福利网站在线观看| 日韩在线播放一区| 国内揄拍国内精品少妇国语| 久久999免费视频| 欧美乱大交xxxxx另类电影| 国产大片精品免费永久看nba| 日本午夜在线亚洲.国产| 亚洲美女av网站| 欧美亚洲在线播放| 成人久久18免费网站图片| 亚洲一区二区国产| 成人精品久久av网站| 久久在线免费观看视频| 最近中文字幕日韩精品| 色哟哟网站入口亚洲精品| 91精品久久久久久久久久久久久| 精品无人区乱码1区2区3区在线| 亚洲国产中文字幕在线观看| 91精品国产高清久久久久久91| 亚洲国产精品专区久久| 亚洲人在线视频| 国产自摸综合网| 欧美电影免费观看高清完整| 亚洲欧洲激情在线| 91国内揄拍国内精品对白| 欧美日韩一二三四五区| 欧美精品在线免费播放| 日本不卡视频在线播放| 欧美激情精品久久久久久蜜臀| 91久久久久久久一区二区| 97久久伊人激情网| 久久久久久久久中文字幕| 亚洲国产中文字幕在线观看| 亚洲片av在线| 4444欧美成人kkkk| 亚洲字幕在线观看| 国产中文字幕亚洲| 国产97免费视| 国产精品第七十二页| 国产日韩换脸av一区在线观看| 日本韩国在线不卡| 国产精品香蕉av| 91色中文字幕| 欧美日韩激情小视频| 97精品久久久| 久久久久久一区二区三区| 亚洲一区国产精品| 九九热最新视频//这里只有精品| 久久免费视频观看| 国产精品美女www爽爽爽视频| 成人久久精品视频| 国产精品h片在线播放| 色播久久人人爽人人爽人人片视av| 亚洲欧洲美洲在线综合| 亚洲成人精品视频在线观看| 欧美色videos| 欧美在线视频观看免费网站| 亚洲性生活视频在线观看| 欧美成人精品在线| 国产精品1234| 国产亚洲视频在线观看| 国产精品视频在线播放| 91高清免费在线观看| 久久夜色精品国产欧美乱| 岛国精品视频在线播放| 国产精品久久久久9999| 国产成人在线精品| 亚洲影院污污.| 久久精品电影网站| 亚洲精品一区二三区不卡| 91九色视频导航| 色诱女教师一区二区三区| 国产一区视频在线| 91精品综合久久久久久五月天| 日韩中文字幕第一页| 国产精品久久久久久久9999| 欧美精品在线网站| 91高清免费在线观看| 97不卡在线视频| 国产精品丝袜视频| 日韩精品免费在线观看| 亚洲福利在线看| 欧美日韩亚洲系列| 亚洲精品久久视频| 亚洲人成电影网站色www| 欧美激情一区二区三区在线视频观看| 国产精品无av码在线观看| 欧美激情性做爰免费视频| 久久久久久久999精品视频| 欧美壮男野外gaytube| 97视频在线观看视频免费视频| 亚洲人在线视频| 成人免费激情视频| 日韩电影中文字幕一区| 亚洲www永久成人夜色| 午夜精品国产精品大乳美女| 91午夜理伦私人影院| 亚洲男人av电影| 亚洲一区二区久久| 91久久国产婷婷一区二区| 成人h视频在线| 久久理论片午夜琪琪电影网| 欧美日韩国产123| 97在线观看免费| 色偷偷综合社区| 亚洲欧美日韩一区二区三区在线| 海角国产乱辈乱精品视频| 国模视频一区二区三区| 亚洲激情小视频| 美女撒尿一区二区三区| 欧美亚洲国产日本| 日本精品视频在线| 久久久久久久久网站| 91精品综合久久久久久五月天| 欧洲亚洲在线视频| 日韩中文在线不卡| 97婷婷涩涩精品一区| 欧美高清一级大片| 欧美午夜宅男影院在线观看| 久久久国产一区|