帝国cms在微信公众号里面获取不到下载认证码的解决方法
现在很多网站为了获取用户都开始这样使用扫码关注微信公众号才能获取下载码

比如我们下载这个模板,
微信里回复了关键字,不回复验证码的原因,是因为我们网站前段时间把php版本升级了7.3
检查了下 微信接口代码

因为php7.0版本很多都设置了register_globals禁止,不能用$GLOBALS["HTTP_RAW_POST_DATA"];
需要改成$postStr = file_get_contents("php://input");

这样就可以接受到信息了
PHP对接微信公众号源码 帝国CMS对接微信公众号PHP接口文件[任意CMS均可]
勿喷,不会PHP代码,但是大概看懂了一些。我在之前论坛里有人提供的接口原基础上做了修改。完成了对帝国CMS基础对接功能,
目前已知的问题是,关键字不能回复,本来应该是先判断关键字,再查库的。 这里代码是先查库再判断了,但我技术太烂,尝试修改的时候一直出现报错,所以PHP大神来完善下吧。
本代码已经是成品,复制源代码,新建php文件粘贴进去,替换你的数据库链接信息,与需要查询的表名,上传至你的网站空间,然后微信公众号后台登录,Url填写该php地址,token默认是weixin. 然后就OK了。
<?php
define("TOKEN", "weixin");//自己定义的token 就是个通信的私钥
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid(); //验证 初次对接时不能注释掉 否则不能通过
$wechatObj->responseMsg();
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 = "谢谢关注[寻片]公众号!本公众号提供各种资源搜索。输入电影名,我将回复你电影观看或下载地址。例:【速度与激情】
";
$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("xxxxx数据库地址:5506","你的数据库","你的数据库密码");
mysql_query("SET NAMES UTF8");
mysql_query("set character_set_client=utf8");
mysql_query("set character_set_results=utf8");
mysql_select_db("你的数据库表名", $con);
$sql = "SELECT * FROM `phome_ecms_news` WHERE `title` like '%".$keyword."%' LIMIT 0 , 1";
$result = mysql_query($sql);
$itemCount = 0;
if(mysql_num_rows($result)>0){
while($row = mysql_fetch_assoc($result))
{
$title = "".$row['title']."";
$des ="";
$url ="http://51zhuangbi.cn".$row['titleurl'];
$picUrl1 ="http://51zhuangbi.cn".$row['titlepic']."";
$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 = '未找到结果,请确认有无错别字,或尝试精简搜索字(如您回复的是【速度与激情10】,请尝试【速度与激情】),此外,依次点击两次右上角,选择推荐给朋友,此后,你将可享受神秘特权哦!';
$des1 ="";
$picUrl1 ="http://51zhuangbi.cn/d/weizhaodao.jpg";
$url="http://51zhuangbi.cn/misc/message/";
$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=="help")
{
$title = '输入你要找的电影名,或点击进入寻片网主页';
$des1 ="";
//图片地址
$picUrl1 ="http://51zhuangbi.cn/help.jpg";
//跳转链接
$url="http://51zhuangbi.cn";
$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
echo $resultStr;
}
if($keyword=="菜单")
{
$title = '点击进入主页,右边 点击 菜单图标 “三” 选择你想看的栏目';
$des1 ="";
//图片地址
$picUrl1 ="http://51zhuangbi.cn/help.jpg";
//跳转链接
$url="http://51zhuangbi.cn";
$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
echo $resultStr;
}
if($keyword=="联系客服")
{
$title = '联系客服';
$des1 ="";
//图片地址
$picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
//跳转链接
$url="http://51zhuangbi.cn/misc/message/";
$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
echo $resultStr;
}
if($keyword=="自助更新")
{
$title = '自助更新入口';
$des1 ="";
//图片地址
$picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
//跳转链接
$url="http://51zhuangbi.cn/misc/message/";
$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
echo $resultStr;
}
if($keyword=="留言")
{
$title = '看片留言:点击进入';
$des1 ="";
//图片地址
$picUrl1 ="http://51zhuangbi.cn/d/help.jpg";
//跳转链接
$url="http://51zhuangbi.cn/misc/message/";
$resultStr= sprintf($newsTpl, $fromUsername, $toUsername, $time, $title, $des1, $picUrl1, $url) ;
echo $resultStr;
}
$contentStr = "\r\n 输入电影名如:速度与激情7 如果没有具体想看的,请点击进入主页:51zhuangbi.cn";
$msgType = 'text';
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
break;
default:
break;
}
}else {
echo "你好!欢迎进微信公众号";
exit;
}
}
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;
}
}
}
?>
具体的大家可以多搜索一下,网上也不少卖这个功能的。
相关文章

帝国CMS根据内容正文字段[newstext]批量获取描述简介字段[smalltext]的
这篇文章主要介绍了帝国CMS根据内容正文字段[newstext]批量重新生成简介字段[smalltext]的方法,需要的朋友可以参考下2023-06-26
帝国CMS 7.2和7.5适用的火车头采集免登陆发布模块配置方法详解(亲测可
帝国cms7.2版本开始增加了金刚模式,登录发布有难度。亲测可用的帝国CMS 7.2/7.5适用免登陆新闻发布模块插件配合火车采集器,可以解决这类问题。堪称完美2022-04-21帝国cms高危SQL注入漏洞(盲注)系统自带RepPIntvar过滤函数使用方法
帝国cms开发的时候要注意一些危险的注入漏洞,防止被黑,RepPIntvar为系统自带函数可以起到过滤字符的作用,下面就为大家介绍一下使用方法2021-07-26
帝国cms后台启用SESSION验证所有的登录信息都是保存在服务器端的,尤其是公共场所登录用默认的cookies是不安全的2021-07-26
最近需要将老版本的帝国cms将7.2升级到7.5版本,参考这篇文章完美升级,特分享一下给需要的朋友2020-08-02
整理了一些常用的帝国CMS调用,灵动标签和万能标签的调用方法举例,包括幻灯片、标题、一级栏目、二级栏目、带模版的友情链接(下拉菜单)、判断内容页字段为空时是如何调用2020-02-04
这篇文章主要介绍了帝国cms网站地图sitemap.xml的制作方法,需要的朋友可以参考下2020-02-04
在使用帝国cms的时候有时候需要把前台数据都更新一下,那么就可以参考下面的文章了,要不漏掉了部分就达不到更新的目地了2020-02-04
今天接到网友询问怎么修改后台登录界面及后台界面,特把方法分享出来需要的朋友可以参考下2020-02-04
最近仿站团队接到很多仿站客户订单,这里面有一个这样的功能,表单提交,今天花时间写个教程给大家,需要的朋友可以参考下2020-02-02









最新评论