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 相关文章推荐
PHPCMS的使用小结
Sep 20 PHP
PHP file_exists问题杂谈
May 07 PHP
php中长文章分页显示实现代码
Sep 29 PHP
用PHP编写和读取XML的几种方式
Jan 12 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP中if和or运行效率对比
Dec 12 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
学习php设计模式 php实现享元模式(flyweight)
Dec 07 PHP
Yii快速入门经典教程
Dec 28 PHP
php字符串操作常见问题小结
Oct 11 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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 获取远程文件大小的3种解决方法
2013/07/11 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
Yii框架数据模型的验证规则rules()被执行的方法
2016/12/02 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
2020/01/26 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
IE JS编程需注意的内存释放问题
2009/06/23 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
JavaScript中push(),join() 函数 实例详解
2016/09/06 Javascript
详解Windows下安装Nodejs步骤
2017/05/18 NodeJs
JS 数组随机洗牌的实例代码
2018/09/12 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
关于vue路由缓存清除在main.js中的设置
2019/11/06 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
python协程用法实例分析
2015/06/04 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
python中的测试框架
2020/11/13 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
巴西购物网站:Estrela10
2018/12/13 全球购物
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
英国行业制服供应商:Alexandra
2019/09/14 全球购物
校园创业策划书
2014/01/14 职场文书
审计主管岗位职责
2014/01/31 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
党员教师一句话承诺
2014/05/30 职场文书
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
检察院院长群众路线教育实践活动个人整改措施
2014/10/04 职场文书
寒山寺导游词
2015/02/03 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书
大学生如何逃脱“毕业季创业队即散伙”魔咒?
2019/08/19 职场文书
导游词之阆中古城
2019/12/23 职场文书
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android