php版微信公众平台接口参数调试实现判断用户行为的方法


Posted in PHP onSeptember 23, 2016

本文实例讲述了php版微信公众平台接口参数调试实现判断用户行为的方法。分享给大家供大家参考,具体如下:

微信开发的时候,发现有个重要的变量$postObj,获得了一个xml结构装入的对象里因为用户发来的事件,之前只知道用户发送一个消息,我进行处理.

今天要弄个用户订阅就给推送一个消息的功能,却发现不知道如何判断用户是订阅的操作,还是取消订阅,还是发消息,代码如下:

public function responseMsg()
{
 global $db;
 //get post data, May be due to the different environments
 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
 writeover("msg.txt",$postStr."rn","a+");
 //。。。。。
}

发现$postStr是之前没有封装的字符串,直接打印,即可知道用户的行为了,测试输出的文件如下:

<xml><ToUserName><![CDATA[gh_a64528aca3b]]></ToUserName>
<FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVaSyk]]></FromUserName>
<CreateTime>1394705044</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[ha]]></Content>
<MsgId>5990212551746www.phpfensi.com353512</MsgId>
</xml>

MsgType即可判断用户行为text表示用户输入了一条文本信息,如果是订阅,那么就是event 大家自己测试吧.

一个新用户关注公众账号发送的消息的例子,代码如下:

<xml><ToUserName><![CDATA[gh_a5218aca3b]]></ToUserName>
<FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVyk]]></FromUserName>
<CreateTime>1394706271</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[]]></EventKey>
</xml>

这样就可以得到具体的事件类型了.

$msgtype = $postObj->MsgType;能判断用户的行为,后续的操作就方便多了.

附上写入日志文件的代码:

‘r' 只读方式打开,将文件指针指向文件头。

‘r+' 读写方式打开,将文件指针指向文件头。

‘w' 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

‘w+' 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

‘a' 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

‘a+' 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

PHP实例代码如下:

function writeover2($filename,$data,$method="rb+",$iflock=1)
{
 @touch($filename);/*文件不存在则创建之.可以采用file_exists验证并其他创建文件函数代替.测试结果效率相当*/
 $handle=@fopen($filename,$method);
 if($iflock){
  flock($handle,LOCK_EX);
 }
 fwrite($handle,$data);
 if($method=="rb+") ftruncate($handle,strlen($data));
 fclose($handle);
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php正则
Jul 07 PHP
PHP与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
PHP读取MySQL数据代码
Jun 05 PHP
php adodb介绍
Mar 19 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
简单的php+mysql聊天室实现方法(附源码)
Jan 05 PHP
php使用CutyCapt实现网页截图保存的方法
Oct 03 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
phpQuery采集网页实现代码实例
Apr 02 PHP
PHP解决高并发的优化方案实例
Dec 10 PHP
PHP 时间处理类Carbon
May 20 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
Sep 23 #PHP
php版微信公众平台之微信网页登陆授权示例
Sep 23 #PHP
中高级PHP程序员应该掌握哪些技术?
Sep 23 #PHP
php利用递归实现删除文件目录的方法
Sep 23 #PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 #PHP
php分页原理 分页代码 分页类制作教程
Sep 23 #PHP
php使用glob函数遍历文件和目录详解
Sep 23 #PHP
You might like
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
php简单的会话类代码
2011/08/08 PHP
Apache服务器下防止图片盗链的办法
2015/07/06 PHP
微信开发之php表单微信中自动提交两次问题解决办法
2017/01/08 PHP
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
基于jQuery实现手风琴菜单、层级菜单、置顶菜单、无缝滚动效果
2017/07/20 jQuery
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
基于原生js运动方式关键点的总结(推荐)
2017/10/01 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
阿望教你用vue写扫雷小游戏
2020/01/20 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
在Windows8上的搭建Python和Django环境
2014/07/03 Python
Python创建模块及模块导入的方法
2015/05/27 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
django序列化serializers过程解析
2019/12/14 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
Django choices下拉列表绑定实例
2020/03/13 Python
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
对孩子的寄语
2014/04/09 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
JavaScript中关于预编译、作用域链和闭包的理解
2021/03/31 Javascript
Vue全家桶入门基础教程
2021/05/14 Vue.js
python ConfigParser库的使用及遇到的坑
2022/02/12 Python
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
vue组件vue-esign实现电子签名
2022/04/21 Vue.js