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和ACCESS写聊天室(八)
Oct 09 PHP
PHP错误提示的关闭方法详解
Jun 23 PHP
PHP取二进制文件头快速判断文件类型的实现代码
Aug 05 PHP
PHP+javascript制作带提示的验证码源码分享
May 28 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
php闭包中使用use声明变量的作用域实例分析
Aug 09 PHP
使用ucenter实现多站点同步登录的讲解
Mar 21 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 PHP
PHP获取学生成绩的方法
Nov 17 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
php4与php5的区别小结(配置异同)
2011/12/20 PHP
一个php生成16位随机数的代码(两种方法)
2014/09/16 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
PHP实现正则表达式分组捕获操作示例
2018/02/03 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
原生Js实现元素渐隐/渐现(原理为修改元素的css透明度)
2013/06/24 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
python+mysql实现简单的web程序
2014/09/11 Python
rabbitmq(中间消息代理)在python中的使用详解
2017/12/14 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Python实现基于C/S架构的聊天室功能详解
2018/07/07 Python
python 删除字符串中连续多个空格并保留一个的方法
2018/12/22 Python
python实现计算器功能
2019/10/31 Python
Python 实现一个简单的web服务器
2021/01/03 Python
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
早餐连锁店计划书
2014/01/08 职场文书
奥利奥广告词
2014/03/20 职场文书
小学数学国培研修日志
2015/11/13 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
如何使用分区处理MySQL的亿级数据优化
2021/06/18 MySQL
Java后台生成图片的完整步骤
2021/08/04 Java/Android
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python