mysql 推送微信公众号_微信用户订阅推送信息,关键字推送图片列表

由于接下来要进行微信开发,所以今天做了一个小功能。

前提:拥有个人订阅号,并成功绑定域名接口

功能概述:用户订阅公众号的时候,像用户推送提示信息,然后用户输入关键词,提供相应功能,这里展示的是从数据库获取到的新闻列表。

关键点是:对于以前在网页上打印出错误信息的模式,现在要改变成在服务器本地建立一个文件,用于调试

完整代码如下

//

// 关注/取消关注事件消息

// 微信公众账号关注与取消关注事件消息

//

date_default_timezone_set('PRC');

define("TOKEN", "zhouqi");

$wechatObj = new wechatCallbackapiTest();

if (!isset($_GET['echostr'])) {

$wechatObj->responseMsg();

}else{

$wechatObj->valid();

}

class wechatCallbackapiTest

{

public function valid()

{

$echoStr = $_GET["echostr"];

if($this->checkSignature()){

echo $echoStr;

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;

}

}

public function responseMsg()

{

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

if (!empty($postStr)){

//将微信返回的post数据包变成xml对象

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

$RX_TYPE = trim($postObj->MsgType);

//获取公共号标识号

$ToUserName = $postObj->ToUserName;

//获取openid

$FromUserName = $postObj->FromUserName;

//获取用户输入的内容

$Keyword = $postObj->Content;

$CreateTime = time();

switch ($RX_TYPE)

{

case "event":

//订阅类型触发时间

if ($postObj->Event == 'subscribe'){

//文本消息模板

$textTpl = "

%s

";

$contentStr = "welcome,欢迎订阅周起的公众号.\r\n\r\n *功能菜单如下\r\n\r\n 1.输入 新闻 获取新闻列表";

//将参数按照顺序填充到$textTpl占位符上

$result = sprintf($textTpl,$FromUserName,$ToUserName,$CreateTime,$contentStr);

//调试使用日志的形式,将调试信息放到本地文件上

file_put_contents('wx.log',date("Y-m-d H:i:s")."订阅事件文本发送成功!\r\n",8);

}

break;

case "text":

if ($Keyword == '新闻'){

//列表图文消息模板

$textHead = "

%s

%s

";

$textBody = "

";

$textFooter = " ";

//连接数据库

$connect = mysqli_connect('127.0.0.1','root','root','wx');

if(!($connect)){

//打印报错信息

$connect = "数据库连接失败Error:".mysqli_connect_errno().":".mysqli_connect_error();

file_put_contents('wx.log',date("Y-m-d H:i:s").$connect."\r\n",8);

}

//微信规定最多返回10个列表信息

$sql = "SELECT * FROM news ORDER BY id DESC LIMIT 0,10";

$res = mysqli_query($connect,$sql);

$count = mysqli_num_rows($res);

//填充图片列表头部信息

$result = sprintf($textHead,$FromUserName,$ToUserName,$CreateTime,$count);

//填充图片列表主要信息

while ($row = mysqli_fetch_assoc($res)){

$result .= sprintf($textBody,$row['title'],$row['descript'],$row['pic'],$row['url']);

}

//填充图片列表尾部信息

$result .= $textFooter;

}

break;

default:

file_put_contents('wx.log',date("Y-m-d H:i:s")." 事件触发失败!\r\n",8);

break;

}

//打印出结果等待微信服务器获取

echo $result;

}else {

echo "";

exit;

}

}

}

?>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值