求大神指教,不用tp5可以實(shí)現(xiàn)自動(dòng)回復(fù)嗎?
下面是代碼,是哪里錯(cuò)了嗎?
<?php
header('Content-type:text');
//驗(yàn)證服務(wù)器地址的有效性
function check(){
??? //1.將timestamp,nonce,token按字典序排序
?? ??? ?$timestamp = $_GET['timestamp'];
?? ??? ?$nonce = $_GET['nonce'];
?? ??? ?$token = "weixin";
?? ??? ?$signature = $_GET['signature'];
?? ??? ?$echostr = $_GET['echostr'];
//$_GET 變量用于收集來(lái)自 method="get" 的表單中的值。從帶有 GET 方法的表單發(fā)送的信息,對(duì)任何人都是可見(jiàn)的(會(huì)顯示在瀏覽器的地址欄),并且對(duì)發(fā)送的信息量也有限制(最多 100 個(gè)字符)
?? ??? ?$array = array( $timestamp,$nonce,$token );
//創(chuàng)建名為 $array 的索引數(shù)組,向它賦三個(gè)元素
?? ??? ?sort($array);
?? ??? ?//2.將排序后的三個(gè)參數(shù)進(jìn)行拼接之后再用sha1加密
?? ??? ?$tmpstr = implode('',$array);
//把數(shù)組元素按指定規(guī)則組合為字符串
?? ??? ?$tmpstr = sha1( $tmpstr );
?? ??? ?//3.將加密后的字符串與signature進(jìn)行對(duì)比,判斷該請(qǐng)求是否來(lái)自微信
?? ??? ?if( $tmpstr == $signature && $echostr){
??????????? //第一次接入微信api
??????????? echo $echostr;
??????????? exit;
??????? } else{
?????? ??? ?//之后接入api即用戶關(guān)注公眾號(hào)和發(fā)送消息
??????????? responseMsg();
??????? }
}
?? ?check();
//接收事件推送并回復(fù)
function responseMsg(){
?? ?
??? //1.獲取微信推送過(guò)來(lái)的數(shù)據(jù),即post數(shù)據(jù)(為xml格式)
??? $postArr = file_get_contents('php://input');
??? //2.處理推送數(shù)據(jù),并設(shè)置回復(fù)類型和內(nèi)容
??? /*推送XML數(shù)據(jù)包示例:
??????? <xml>
??????? <ToUserName><![CDATA[toUser]]></ToUserName>
??????? <FromUserName><![CDATA[FromUser]]></FromUserName>
??????? <CreateTime>123456789</CreateTime>
??????? <MsgType><![CDATA[event]]></MsgType>
??????? <Event><![CDATA[subscribe]]></Event>
??????? </xml> */
??? $postObj = simplexml_load_string($postArr);//將xml數(shù)據(jù)轉(zhuǎn)為對(duì)象
??? //判斷該數(shù)據(jù)包是否是訂閱的事件推送
??? if( strtolower( $postObj -> MsgType) == 'event'){
?????? ?
?????? ??? ?//如果是關(guān)注事件即subscribe則回復(fù)消息
?????? ??? ? if(strtolower( $postObj -> Event) == 'subscribe'){
??????????? ??? ? $toUser = $postObj -> FromUserName;
???????????????? $fromUser = $postObj -> ToUserName;
???????????????? $createTime = time();
???????????????? $msgType = 'text';
???????????????? $content = '您已成功關(guān)注該平臺(tái)';
???????????????? $template = '? <xml>
??????????????????????????????? <ToUserName><![CDATA[%s]]></ToUserName>
??????????????????????????????? <FromUserName><![CDATA[%s]]></FromUserName>
??????????????????????????????? <CreateTime>%s</CreateTime>
??????????????????????????????? <MsgType><![CDATA[%s]></MsgType>
??????????????????????????????? <Content><![CDATA[%s]]></Content>
??????????????????????????????? </xml>';
???????????????? $info = sprintf( $template ,$toUser,$fromUser,$createTime,$msgType,$content);//將xml數(shù)據(jù)包進(jìn)行對(duì)應(yīng)的變量賦值
??????????? ??? ? echo $info;
???????????? }
?? ??? ?}
}
?>
2017-04-10
你的中括號(hào),檢查下
2018-04-28
我使用yii2是沒(méi)有任何問(wèn)題的,和框架是沒(méi)有關(guān)系的
2017-04-28
我用tp5一直沒(méi)有收到自動(dòng)回復(fù),不知道是什么回事