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(5) 类和对象
Feb 16 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
php生成数字字母的验证码图片
Jul 14 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
Oct 11 PHP
Yii全局函数用法示例
Jan 22 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
PHP反射原理与用法深入分析
Sep 28 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 PHP
Laravel框架下的Contracts契约详解
Mar 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP数组内存利用率低和弱类型详细解读
2017/08/10 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
CSS3画一个阴阳八卦图
2021/03/09 HTML / CSS
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
jQuery入门基础知识学习指南
2015/08/14 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
推荐11个实用Python库
2015/01/23 Python
python列出目录下指定文件与子目录的方法
2015/07/03 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
澳大利亚香水在线:Price Rite Mart
2017/12/28 全球购物
高中运动会入场词
2014/02/14 职场文书
2014七年级班主任工作总结
2014/12/05 职场文书
Nginx四层负载均衡的配置指南
2021/06/11 Servers