php版微信公眾平臺(tái)接口參數(shù)調(diào)試實(shí)現(xiàn)判斷用戶行為的方法
本文實(shí)例講述了php版微信公眾平臺(tái)接口參數(shù)調(diào)試實(shí)現(xiàn)判斷用戶行為的方法。分享給大家供大家參考,具體如下:
微信開(kāi)發(fā)的時(shí)候,發(fā)現(xiàn)有個(gè)重要的變量$postObj,獲得了一個(gè)xml結(jié)構(gòu)裝入的對(duì)象里因?yàn)橛脩舭l(fā)來(lái)的事件,之前只知道用戶發(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是之前沒(méi)有封裝的字符串,直接打印,即可知道用戶的行為了,測(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>
這樣就可以得到具體的事件類(lèi)型了.
$msgtype = $postObj->MsgType;能判斷用戶的行為,后續(xù)的操作就方便多了.
附上寫(xiě)入日志文件的代碼:
‘r' 只讀方式打開(kāi),將文件指針指向文件頭。
‘r+' 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭。
‘w' 寫(xiě)入方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。
‘w+' 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。
‘a(chǎn)' 寫(xiě)入方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。
‘a(chǎn)+' 讀寫(xiě)方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(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微信開(kāi)發(fā)技巧匯總》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語(yǔ)法入門(mén)教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
- php判斷頁(yè)面是否是微信打開(kāi)的示例(微信打開(kāi)網(wǎng)頁(yè))
- PHP判斷是手機(jī)端還是PC端 PHP判斷是否是微信瀏覽器
- php判斷用戶是否關(guān)注微信公眾號(hào)
- 微信公眾號(hào)判斷用戶是否已關(guān)注php代碼解析
- php版微信開(kāi)發(fā)之接收消息,自動(dòng)判斷及回復(fù)相應(yīng)消息的方法
- 使用PHP和JavaScript判斷請(qǐng)求是否來(lái)自微信內(nèi)瀏覽器
- PHP判斷是否是微信打開(kāi),瀏覽器打開(kāi)的方法
- PHP判斷是否是微信打開(kāi)還是瀏覽器打開(kāi)的方法
- PHP限制頁(yè)面只能在微信自帶瀏覽器訪問(wèn)的代碼
- PHP判斷是否微信訪問(wèn)的方法示例
相關(guān)文章
php切割頁(yè)面div內(nèi)容的實(shí)現(xiàn)代碼分享
今天在百度知道看到一個(gè)關(guān)于php獲取DIV內(nèi)容的問(wèn)題,做了一晚,終于是做出來(lái)了2012-07-07Zend的Registry機(jī)制的使用說(shuō)明
本篇文章介紹了,Zend的Registry機(jī)制的使用說(shuō)明。需要的朋友參考下2013-05-05PHP 中使用ajax時(shí)一些常見(jiàn)錯(cuò)誤總結(jié)整理
這篇文章主要介紹了PHP 中使用ajax時(shí)一些常見(jiàn)錯(cuò)誤總結(jié)整理的相關(guān)資料,需要的朋友可以參考下2017-02-02php使用goto實(shí)現(xiàn)自動(dòng)重啟swoole、reactphp、workerman服務(wù)的代碼
這篇文章主要介紹了php使用goto實(shí)現(xiàn)自動(dòng)重啟swoole、reactphp、workerman服務(wù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04淺談PHP調(diào)用Webservice思路及源碼分享
NuSoap是PHP環(huán)境下的WebService編程工具,用于創(chuàng)建或調(diào)用WebService。它是一個(gè)開(kāi)源軟件,是完全采用PHP語(yǔ)言編寫(xiě)的、通過(guò)HTTP收發(fā)SOAP消息的一系列PHP類(lèi)。NuSOAP的一個(gè)優(yōu)勢(shì)是不需要擴(kuò)展庫(kù)的支持,這種特性使得NuSoap可以用于所有的PHP環(huán)境,不受服務(wù)器安全設(shè)置的影響。2014-06-06單一index.php實(shí)現(xiàn)PHP任意層級(jí)文件夾遍歷(Zjmainstay原創(chuàng))
本程序?qū)崿F(xiàn)了使用一個(gè)index.php文件來(lái)實(shí)現(xiàn)所有文件夾的遍歷效果,避免了需要無(wú)窮復(fù)制index.php至文件夾下才能實(shí)現(xiàn)的效果2012-07-07Laravel自定義 封裝便捷返回Json數(shù)據(jù)格式的引用方法
今天小編就為大家分享一篇Laravel自定義 封裝便捷返回Json數(shù)據(jù)格式的引用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09