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的控制语句
Oct 09 PHP
php日历[测试通过]
Mar 27 PHP
PHP中的session永不过期的解决思路及实现方法分享
Apr 20 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
Nov 07 PHP
解析php做推送服务端实现ios消息推送
Jul 01 PHP
浅谈PHP调用Webservice思路及源码分享
Jun 04 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
分享10段PHP常用代码
Nov 11 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
PHP生成word文档的三种实现方式
Nov 14 PHP
laravel 5异常错误:FatalErrorException in Handler.php line 38的解决
Oct 12 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
PHP无限分类的类
2007/01/02 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
php数组去除空值函数分享
2015/02/02 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
js实现的下拉框二级联动效果
2016/04/30 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
node.js实现带进度条的多文件上传
2020/03/27 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
python魔法方法-自定义序列详解
2016/07/21 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
python解决汉字编码问题:Unicode Decode Error
2017/01/19 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
python实现12306火车票查询器
2017/04/20 Python
Python Web程序部署到Ubuntu服务器上的方法
2018/02/22 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
python实现异常信息堆栈输出到日志文件
2019/12/26 Python
python各层级目录下import方法代码实例
2020/01/20 Python
Python @property装饰器原理解析
2020/01/22 Python
基于python实现图片转字符画代码实例
2020/09/04 Python
C#实现对任一张表的数据进行增,删,改,查要求,运用Webservice,体现出三层架构
2014/07/11 面试题
高三历史教学反思
2014/01/09 职场文书
领导干部考察材料
2014/02/08 职场文书
英文版辞职信
2015/02/28 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python
node快速搭建后台的实现步骤
2022/02/18 NodeJs
vue选项卡切换的实现案例
2022/04/11 Vue.js