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之Smarty入门
Jan 04 PHP
phpMyAdmin 安装及问题总结
May 28 PHP
PHP打开和关闭文件操作函数总结
Nov 18 PHP
对PHP PDO的一些认识小结
Jan 23 PHP
php 使用array函数实现分页
Feb 13 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
php限制文件下载速度的代码
Oct 20 PHP
Yii框架实现图片上传的方法详解
May 20 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
laravel 数据验证规则详解
Oct 23 PHP
如何利用PHP实现上传图片功能详解
Sep 24 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
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
Mootools 1.2教程 函数
2009/09/15 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
用js实现in_array的方法
2013/11/05 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
jQuery中size()方法用法实例
2014/12/27 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
linux下安装easy_install的方法
2013/02/10 Python
python获取糗百图片代码实例
2013/12/18 Python
Python中的super()方法使用简介
2015/08/14 Python
python通过百度地图API获取某地址的经纬度详解
2018/01/28 Python
numpy使用技巧之数组过滤实例代码
2018/02/03 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
Python调用OpenCV实现图像平滑代码实例
2020/06/19 Python
如何在windows下安装配置python工具Ulipad
2020/10/27 Python
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
营销与策划专业毕业生求职信
2013/11/01 职场文书
新课程改革心得体会
2016/01/22 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书