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无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
PHP实现无限极分类图文教程
Nov 25 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
php中get_cfg_var()和ini_get()的用法及区别
Mar 04 PHP
PHP单例模式详细介绍
Jul 01 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
Mar 21 PHP
PHP的Json中文处理解决方案
Sep 29 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 PHP
php7下的filesize函数
Sep 30 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 星际争霸
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
js cookies 常见网页木马挂马代码 24小时只加载一次
2009/04/13 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
js的写法基础分析
2011/01/17 Javascript
什么是DOM(Document Object Model)文档对象模型
2012/03/05 Javascript
Extjs实现进度条的两种便捷方式
2013/09/26 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
JS实现点击按钮获取页面高度的方法
2015/11/02 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
BootStrap给table表格的每一行添加一个按钮事件
2017/09/07 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
[01:20:05]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第二场 2月5日
2021/03/11 DOTA
python中lambda与def用法对比实例分析
2015/04/30 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
2017/10/25 Python
Python 转换文本编码实现解析
2019/08/27 Python
Python树莓派学习笔记之UDP传输视频帧操作详解
2019/11/15 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
PyQt5实现登录页面
2020/05/30 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
瑜伽国际:Yoga International
2018/04/18 全球购物
为什么要有struct关键字
2012/05/08 面试题
规范化管理年活动总结
2014/08/29 职场文书
2014年党务工作总结
2014/11/25 职场文书
实习工作表现评语
2014/12/31 职场文书
人事行政部各岗位职责说明书!
2019/07/15 职场文书
Pyhton模块和包相关知识总结
2021/05/12 Python
Java设计模式之代理模式
2022/04/22 Java/Android