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&amp;mysql(五)
Oct 09 PHP
WHOIS类的修改版
Oct 09 PHP
第十二节--类的自动加载
Nov 16 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
Sep 28 PHP
php实现计数器方法小结
Jan 05 PHP
PHP实现上传文件并存进数据库的方法
Jul 16 PHP
PHP  Yii清理缓存的实现方法
Nov 10 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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中一些可能会被忽略的问题
2013/06/21 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
解析js原生方法创建表格效率测试
2013/07/08 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
三种方式实现瀑布流布局
2017/02/10 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
取消Bootstrap的dropdown-menu点击默认关闭事件方法
2018/08/10 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
Python partial函数原理及用法解析
2019/12/11 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
优质的学校老师推荐信
2013/10/28 职场文书
拉歌口号大全
2014/06/13 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
民事调解书范文
2015/05/20 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
redis cluster支持pipeline的实现思路
2021/06/23 Redis
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers