猿问

微信公众号token一直验证失败. 帮忙看看 谢谢

<?php
/**
  * wechat php test
  */
//此为新视界提供修改,可随意删除
//必读:修改完毕请进行转码设置需要转为UTF-8编码notepad++转码方式编码--转为UTF-8编码格式或者更改之前进行设置,方式为编码--以UTF-8格式编码
//define your token
//weixinabc是一个token,是一个令牌
define("TOKEN", "weixin");//token需要与微信后台保持一致
$wechatObj = new wechatCallbackapiTest();

$wechatObj->responseMsg();
//$wechatObj->valid();
//exit;

class wechatCallbackapiTest
{
	public function valid()
    {
        $echoStr = $_GET["echostr"];


        if($this->checkSignature()){
        	echo $echoStr;
        	exit;
        }
    }


    public function responseMsg()
    {

		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];


		if (!empty($postStr)){

                libxml_disable_entity_loader(true);
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);

				$event = $postObj->Event;			
                $time = time();
                $textTpl = "<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[%s]]></MsgType>
							<Content><![CDATA[%s]]></Content>
							<FuncFlag>0</FuncFlag>
							</xml>";    
				


				switch($postObj->MsgType)
				{
					case 'event':

						if($event == 'subscribe')
						{
						//关注后的回复
												$contentStr = "可更改,自由发挥
1.电影目录请输入【1】 
 
2.电视目录请输入【2】 
 
3.动漫目录请输入【3】 
 
4.伦理目录请输入【4】 
 
5.加群交流请输入【5】";


							$msgType = 'text';
							$textTpl = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
							echo $textTpl;

						}
						break;
					case 'text':
						if(preg_match('/[\x{4e00}-\x{9fa5}]+/u',$keyword))
						{	

							$newsTplHeader = "<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[news]]></MsgType>
							<ArticleCount>%s</ArticleCount>
							<Articles>";

							$newsTplItem = "<item>
							<Title><![CDATA[%s]]></Title> 
							<Description><![CDATA[%s]]></Description>
							<PicUrl><![CDATA[%s]]></PicUrl>
							<Url><![CDATA[%s]]></Url>
							</item>";
							$newsTplFooter="</Articles>
							</xml>";
 
									$con = mysql_connect("127.0.0.1","dianying","dianying");	//修改数据库数据							
									mysql_query("SET NAMES UTF8");
									mysql_query("set character_set_client=utf8"); 
									mysql_query("set character_set_results=utf8");
									mysql_select_db("dianying12345", $con);//修改数据库数据
									$sql = "SELECT * FROM `mac_vod` WHERE `d_name` like '%".$keyword."%'  LIMIT 0 , 10";

									$result = mysql_query($sql);
									$itemCount = 0;
								if(mysql_num_rows($result)>0){
								while($row = mysql_fetch_assoc($result))
								{

									$title = "".$row['d_name']."";
									$des ="";
									//下面为内容页
									$url ="http://www.baidu.com/vod-detail-id-".$row['d_id'].".html";//后面为不可更改?m=vod-detail-id-为网站内容页地址d_id为网站内容页id不可更改
									$picUrl1 ="".$row['v_pic']."";//v_pic为图片代码不可更改
									$contentStr .= sprintf($newsTplItem, $title, $des, $picUrl1, $url);																													
									++$itemCount;	
								}							
								$newsTplHeader = sprintf($newsTplHeader, $fromUsername, $toUsername, $time, $itemCount);
								$resultStr =  $newsTplHeader. $contentStr. $newsTplFooter;
								echo $resultStr; 
								}
								else
								{
									$newsTpl = "<xml>
										<ToUserName><![CDATA[%s]]></ToUserName>
										<FromUserName><![CDATA[%s]]></FromUserName>
										<CreateTime>%s</CreateTime>
										<MsgType><![CDATA[news]]></MsgType>
										<ArticleCount>1</ArticleCount>
										<Articles>
										<item>
										<Title><![CDATA[%s]]></Title> 
										<Description><![CDATA[%s]]></Description>
										<PicUrl><![CDATA[%s]]></PicUrl>
										<Url><![CDATA[%s]]></Url>
										</item>							
										</Articles>
										</xml>";						
								
								//没有查找到的时候的回复
										$title = '不好意思,没找到哟,请留言!';
										
										$des1 ="";
										
										$picUrl1 ="";//为搜索返回图片代码
										
										$url="http://www.baidu.com/index.php?m=vod-search";//此为你网站的搜索页地址,一般不需要更改

										$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
									
										echo $resultStr; 	

								}
										mysql_close($con);
									
								}																		
						else
						{
							$newsTpl = "<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[news]]></MsgType>
							<ArticleCount>1</ArticleCount>
							<Articles>
							<item>
							<Title><![CDATA[%s]]></Title> 
							<Description><![CDATA[%s]]></Description>
							<PicUrl><![CDATA[%s]]></PicUrl>
							<Url><![CDATA[%s]]></Url>
							</item>							
							</Articles>
							</xml>";	
 						if($keyword=="1")
						{
										$title = '电影目录:点击进入';
										
										$des1 ="";
										//图片地址
										$picUrl1 ="";
										//跳转链接
										$url="http://www.baidu.com/?m=vod-type-id-1.html";//此为分类目录地址

										$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
									
										echo $resultStr; 	
						}
						if($keyword=="2")
						{
										$title = '电视目录:点击进入';
										
										$des1 ="";
										//图片地址
										$picUrl1 ="";
										//跳转链接
										$url="http://www.baidu.com/?m=vod-type-id-2.html";//此为分类目录地址

										$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
									
										echo $resultStr; 	
						}
						if($keyword=="3")
						{
										$title = '动漫目录:点击进入';
										
										$des1 ="";
										//图片地址
										$picUrl1 ="";
										//跳转链接
										$url="http://www.baidu.com/?m=vod-type-id-4.html";//此为分类目录地址

										$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
									
										echo $resultStr; 	
						}
						if($keyword=="4")
						{
										$title = '午夜大片:点击进入';
										
										$des1 ="";
										//图片地址
										$picUrl1 ="图片地址";
										//跳转链接
										$url="http://www.baidu.com/?m=vod-type-id-16.html";//此为分类目录地址

										$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
									
										echo $resultStr; 	
						}
						if($keyword=="5")
						{
										$title = '加群留言:点击进入';
										
										$des1 ="";
										//图片地址
										$picUrl1 ="";
										//跳转链接
										$url="此为跳转链接";//可随意更改

										$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
									
										echo $resultStr; 	
						}
												$contentStr = "可以更改回复消息显示";//更改可随意


							$msgType = 'text';
							$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
							echo $resultStr;
						}					
						
						
						break;
					default:
						break;
				}						

        }else {
        	echo "OK";
        	exit;
        }
    }
		
	private function checkSignature()
	{
        // you must define TOKEN by yourself
        if (!defined("TOKEN")) {
            throw new Exception('TOKEN is not defined!');
        }
        
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        		
		$token = TOKEN;
		$tmpArr = array($token, $timestamp, $nonce);
        // use SORT_STRING rule
		sort($tmpArr, SORT_STRING);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}
}

?>


港哥
浏览 82回答 0
0回答
随时随地看视频慕课网APP
我要回答