请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

亿仁网

 找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 315|回复: 1

点击菜单页面跳转访问量统计

[复制链接]
  • TA的每日心情
    奋斗
    2019-3-14 22:24
  • 签到天数: 160 天

    [LV.7]常住居民III

    1074

    主题

    1139

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    18046
    发表于 2017-5-20 14:41:44 | 显示全部楼层 |阅读模式
    当自定义菜单类型为view的时候,微信公众平台服务器会把菜单的事件类型(view)和URL访问地址一并发送到第三服务器。消息格式如下:
    1. <xml>
    2. <ToUserName><![CDATA[toUser]]></ToUserName>
    3. <FromUserName><![CDATA[FromUser]]></FromUserName>
    4. <CreateTime>123456789</CreateTime>
    5. <MsgType><![CDATA[event]]></MsgType>
    6. <Event><![CDATA[VIEW]]></Event>
    7. <EventKey><![CDATA[www.qq.com]]></EventKey>
    8. </xml>
    复制代码
    参数说明见图如下

    以上通过获取到事件推送消息中的URL地址信息和本地文件操作,实现菜单按钮访问量的统计,效果如图所示

    首先,重写IndexController.class.php控制器文件中的myMenu()方法,修改微信公众平台测试号的菜单为view。这里的代码如下:
    1.         // 创建/查看/删除 菜单
    2.         public function myMenu()
    3.         {
    4.                 $data = '{
    5.                 "button":[
    6.                         {
    7.                                 "type":"view",
    8.                                 "name":"查看新闻",
    9.                                 "url":"http://127.0.0.1"
    10.                         }
    11.                 ]}';
    12.                 import('@.Lib.Wx.WxMenu');
    13.                 $wx = new \WxMenu(APP_ID , APP_SECRET);
    14.                 dump($wx->createMenu($data));
    15.         }
    复制代码
    其次,在configToken()方法里面新增的对view类型事件进行处理的代码如下
    1.                         //View事件处理
    2.                         if($this->data['MsgType'] == 'event' && $this->data['Event'] == 'VIEW')
    3.                         {
    4.                                 // 读取本地文件存储的访问量统计数据
    5.                                 $view_info = file_get_contents('./website_pv_count.json');
    6.                                 $new_arr['url'] = $this->data['EventKey'];
    7.                                 $view_arr = json_decode($view_info , true);
    8.                                 // 若存在则pv访问量增加1,若不存在则写入默认值
    9.                                 if($view_info !== false)
    10.                                 {
    11.                                         $new_arr['pv'] = $view_arr['pv'] + 1;
    12.                                 }
    13.                                 else
    14.                                 {
    15.                                         $new_arr['pv'] = 1;
    16.                                 }
    17.                                 // 把访问量统计写入到本地
    18.                                 file_put_contents('./website_pv_count.json', json_encode($new_arr));
    19.                         }
    复制代码
    当用户单击了菜单访问按钮后,系统根据事件类型判断先找到本地是否存储的访问量统计文件website_pv_count.json,再把统计数据进行累加或者初始化,然后更新本地的统计信息存储文件website_pv_count.json。增加 showWebSitePv()方法后,可以方便地在游览器查看相应的统计数据
    1.         // 查看网址访问量
    2.         public function showWebSitePv()
    3.         {
    4.                 header('Content-type:text/html;charset=utf-8');
    5.                 echo "<pre>";
    6.                 print_r(json_decode(file_get_contents('./website_pv_count.json')));
    7.                 die;
    8.         }
    复制代码


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x

    相关帖子

    造物之前,必先造人。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-3-14 22:24
  • 签到天数: 160 天

    [LV.7]常住居民III

    1074

    主题

    1139

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    18046
     楼主| 发表于 2017-5-20 15:33:18 | 显示全部楼层
    已转载于头条、企鹅(亿仁)等,发表于2017年5月20日第二篇
    造物之前,必先造人。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|亿仁网 ( 粤ICP备16098737  

    GMT+8, 2020-8-3 17:04 , Processed in 0.248904 second(s), 31 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表