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中使用PDF文档功能
Oct 09 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
Yii2搭建后台并实现rbac权限控制完整实例教程
Apr 28 PHP
PHP判断数组是否为空的常用方法(五种方法)
Feb 08 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP中创建和编辑Excel表格的方法
Sep 13 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
Oct 15 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
农民C键的运用技巧
2020/03/04 星际争霸
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
浅谈js中的闭包
2015/03/16 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
Bootstrap 轮播(Carousel)插件
2016/12/26 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
vue二级路由设置方法
2018/02/09 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
2018/08/27 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
python自动化测试实例解析
2014/09/28 Python
修复CentOS7升级Python到3.6版本后yum不能正确使用的解决方法
2018/01/26 Python
Python机器学习之K-Means聚类实现详解
2018/02/22 Python
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
python安装scipy的步骤解析
2019/09/28 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
物流管理应届生求职信
2013/11/07 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
银行求职信个人范文
2013/12/16 职场文书
踏青活动策划方案
2014/08/19 职场文书
小学重阳节活动总结
2015/03/24 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang