茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    PHP微信開發(fā)之微信消息自動回復下所遇到的坑
    來源:易賢網(wǎng) 閱讀:1384 次 日期:2016-08-24 14:27:49
    溫馨提示:易賢網(wǎng)小編為您整理了“PHP微信開發(fā)之微信消息自動回復下所遇到的坑”,方便廣大網(wǎng)友查閱!

    微信回復原理:

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

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

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

    回答:

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

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

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

    回答:

    參數(shù)含義

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

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

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

    ns:一般省略

    is_prefix:一般省略

    函數(shù)執(zhí)行完成后返回SimpleXMLElement類的一個對象。

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

    <span style="font-family:Courier New;font-size:14px;"><?php 

    define("TOKEN","weixin"); 

    $weixinObj = new Wechat(); 

    $weixinObj->valid(); 

    class Wechat{ 

    public function valid(){ 

    $echoStr = $_GET['echostr']; 

    //如果是第一次接入 

    if($this->checkSignature() && $echoStr ){ 

    echo $echoStr; 

    exit; 

    }else{ 

    $this->responseMsg(); 

    //校驗方法 

    private function checkSignature(){ 

    $signature = $_GET['signature']; 

    $timestamp = $_GET['timestamp']; 

    $nonce = $_GET['nonce']; 

    $token = TOKEN; 

    $tmpArr = array($token, $timestamp, $nonce); 

    sort($tmpArr); 

    $tmpStr = implode($tmpArr); 

    $tmpStr = sha1($tmpStr); 

    if($tmpStr == $signature){ 

    return true; 

    }else{ 

    return false; 

    /* 普通文本消息 

    <xml> 

    <ToUserName><![CDATA[toUser]]></ToUserName> 

    <FromUserName><![CDATA[fromUser]]></FromUserName> 

    <CreateTime>1348831860</CreateTime> 

    <MsgType><![CDATA[text]]></MsgType> 

    <Content><![CDATA[this is a test]]></Content> 

    </xml> 

    */

    public function responseMsg(){ 

    //獲取微信服務器POST請求中的數(shù)據(jù) 

    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 

    if( !empty($postStr) ){ 

    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 

    $fromUser = $postObj->FromUserName; 

    $toUser = $postObj->ToUserName; 

    $keyword = trim($postObj->Content); 

    $time = time(); 

    $template = "<xml> 

    <ToUserName><![CDATA[%s]]></ToUserName> 

    <FromUserName><![CDATA[%s]]></FromUserName> 

    <CreateTime>%s</CreateTime> 

    <MsgType><![CDATA[%s]]></MsgType> 

    <Content><![CDATA[%s]]></Content> 

    </xml>"; 

    if( strtolower($postObj->MsgType)!='text' ){ 

    $msgType = "text"; 

    $content = "我只接受文本消息"; 

    }else{ 

    $msgType = "text"; 

    if( !empty($keyword) ){ 

    $content = "您發(fā)送的消息是:".$postObj->Content; 

    }else{ 

    $content = "請輸入關鍵字";//消息為空 

    $info = sprintf($template, $fromUser, $toUser, $time, $msgType, $content); 

    echo $info; 

    }else{ 

    echo ""; 

    exit; 

    }</span>

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

    <span style="font-family:Courier New;font-size:14px;"><?php 

    define("TOKEN","weixin"); 

    $weixinObj = new Wechat(); 

    $weixinObj->valid(); 

    class Wechat{ 

    public function valid(){ 

    $echoStr = $_GET['echostr']; 

    //如果是第一次接入 

    if($this->checkSignature() && $echoStr ){ 

    echo $echoStr; 

    exit; 

    }else{ 

    $this->responseMsg(); 

    //校驗方法 

    private function checkSignature(){ 

    $signature = $_GET['signature']; 

    $timestamp = $_GET['timestamp']; 

    $nonce = $_GET['nonce']; 

    $token = TOKEN; 

    $tmpArr = array($token, $timestamp, $nonce); 

    sort($tmpArr); 

    $tmpStr = implode($tmpArr); 

    $tmpStr = sha1($tmpStr); 

    if($tmpStr == $signature){ 

    return true; 

    }else{ 

    return false; 

    /* 接收圖片消息格式 

    <xml> 

    <ToUserName><![CDATA[toUser]]></ToUserName> 

    <FromUserName><![CDATA[fromUser]]></FromUserName> 

    <CreateTime>1348831860</CreateTime> 

    <MsgType><![CDATA[image]]></MsgType> 

    <PicUrl><![CDATA[this is a url]]></PicUrl> 

    <MediaId><![CDATA[media_id]]></MediaId> 

    <MsgId>1234567890123456</MsgId> 

    </xml> 

    */

    public function responseMsg(){ 

    //獲取微信服務器POST請求中的數(shù)據(jù) 

    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 

    if( !empty($postStr) ){ 

    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 

    $fromUser = $postObj->FromUserName; 

    $toUser = $postObj->ToUserName; 

    $time = time(); 

    $msgType= $postObj->MsgType; 

    $picUrl = $postObj->PicUrl; 

    $mediaId = $postObj->MediaId; 

    $template = "<xml> 

    <ToUserName><![CDATA[%s]]></ToUserName> 

    <FromUserName><![CDATA[%s]]></FromUserName> 

    <CreateTime>%s</CreateTime> 

    <MsgType><![CDATA[%s]]></MsgType> 

    <Content><![CDATA[%s]]></Content> 

    </xml>"; 

    if( strtolower($msgType)!='image' ){ 

    $msgType = "text"; 

    $content = "我只接受圖片消息"; 

    }else{ 

    $msgType = "text"; 

    if( !empty( $picUrl ) ){ 

    $content = "圖片鏈接為:".$picUrl."\n"; 

    $content .= "媒體id:".$mediaId; 

    }else{ 

    $content = "請發(fā)送圖片";//消息為空 

    $info = sprintf($template, $fromUser, $toUser, $time, $msgType, $content); 

    echo $info; 

    }else{ 

    echo ""; 

    exit; 

    }</span>

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

    更多信息請查看網(wǎng)絡編程
    易賢網(wǎng)手機網(wǎng)站地址:PHP微信開發(fā)之微信消息自動回復下所遇到的坑

    2026國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)