php版微信公眾平臺(tái)接口參數(shù)調(diào)試實(shí)現(xiàn)判斷用戶行為的方法
本文實(shí)例講述了php版微信公眾平臺(tái)接口參數(shù)調(diào)試實(shí)現(xiàn)判斷用戶行為的方法。分享給大家供大家參考,具體如下:
微信開發(fā)的時(shí)候,發(fā)現(xiàn)有個(gè)重要的變量$postObj,獲得了一個(gè)xml結(jié)構(gòu)裝入的對(duì)象里因?yàn)橛脩舭l(fā)來的事件,之前只知道用戶發(fā)送一個(gè)消息,我進(jìn)行處理.
今天要弄個(gè)用戶訂閱就給推送一個(gè)消息的功能,卻發(fā)現(xiàn)不知道如何判斷用戶是訂閱的操作,還是取消訂閱,還是發(fā)消息,代碼如下:
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+");
//。。。。。
}
發(fā)現(xiàn)$postStr是之前沒有封裝的字符串,直接打印,即可知道用戶的行為了,測(cè)試輸出的文件如下:
<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 大家自己測(cè)試吧.
一個(gè)新用戶關(guān)注公眾賬號(hào)發(fā)送的消息的例子,代碼如下:
<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;能判斷用戶的行為,后續(xù)的操作就方便多了.
附上寫入日志文件的代碼:
‘r' 只讀方式打開,將文件指針指向文件頭。
‘r+' 讀寫方式打開,將文件指針指向文件頭。
‘w' 寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。
‘w+' 讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。
‘a(chǎn)' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
‘a(chǎn)+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
PHP實(shí)例代碼如下:
function writeover2($filename,$data,$method="rb+",$iflock=1)
{
@touch($filename);/*文件不存在則創(chuàng)建之.可以采用file_exists驗(yàn)證并其他創(chuàng)建文件函數(shù)代替.測(cè)試結(jié)果效率相當(dāng)*/
$handle=@fopen($filename,$method);
if($iflock){
flock($handle,LOCK_EX);
}
fwrite($handle,$data);
if($method=="rb+") ftruncate($handle,strlen($data));
fclose($handle);
}
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP微信開發(fā)技巧匯總》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
解決Laravel 不能創(chuàng)建 migration 的問題
今天小編就為大家分享一篇解決Laravel 不能創(chuàng)建 migration 的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
基于PHP生成靜態(tài)頁的實(shí)現(xiàn)方法
本篇文章是對(duì)PHP生成靜態(tài)頁的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05
destoon會(huì)員注冊(cè)提示“數(shù)據(jù)校驗(yàn)失?。?)”解決方法
這篇文章主要介紹了destoon會(huì)員注冊(cè)提示“數(shù)據(jù)校驗(yàn)失?。?)”解決方法,需要的朋友可以參考下2014-06-06
Thinkphp5 微信公眾號(hào)token驗(yàn)證不成功的原因及解決方法
下面小編就為大家?guī)硪黄猅hinkphp5 微信公眾號(hào)token驗(yàn)證不成功的原因及解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11
php 后端實(shí)現(xiàn)JWT認(rèn)證方法示例
這篇文章主要介紹了php 后端實(shí)現(xiàn)JWT認(rèn)證方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-09-09
php二維數(shù)組用鍵名分組相加實(shí)例函數(shù)
php二維數(shù)組以鍵名進(jìn)行分組相加的實(shí)例程序2013-11-11

