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