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 24 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
Jun 24 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
php结合curl实现多线程抓取
Jul 09 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
PHP使用星号隐藏用户名,手机和邮箱的实现方法
Sep 22 PHP
PHP目录操作实例总结
Sep 27 PHP
PHP以json或xml格式返回请求数据的方法
May 31 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
PHP 出现 http500 错误的解决方法
Mar 09 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 fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
Smarty高级应用之缓存操作技巧分析
2016/05/14 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
用jscript实现新建word文档
2007/06/15 Javascript
JavaScript的变量作用域深入理解
2009/10/25 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
jQuery弹性滑动导航菜单实现思路及代码
2013/05/02 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
VUEJS实战之构建基础并渲染出列表(1)
2016/06/13 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
详解vue组件中使用路由方法
2019/02/12 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
[02:57]2014DOTA2国际邀请赛 选手辛苦解说更辛苦
2014/07/10 DOTA
python结合selenium获取XX省交通违章数据的实现思路及代码
2016/06/26 Python
python使用正则表达式替换匹配成功的组
2017/11/17 Python
Python3之读取连接过的网络并定位的方法
2018/04/22 Python
Django组件content-type使用方法详解
2019/07/19 Python
python和JavaScript哪个容易上手
2020/06/23 Python
纯CSS3编写的的精美动画进度条(无flash/无图像/无脚本/附源码)
2013/01/07 HTML / CSS
经典优秀个人求职自荐信格式
2013/09/25 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
合作经营协议书范本
2014/04/17 职场文书
低碳环保口号
2014/06/12 职场文书
Oracle笔记
2021/04/05 Oracle
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript
TaiShan 200服务器安装Ubuntu 18.04的图文教程
2022/06/28 Servers