国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

開(kāi)發(fā)微信公眾平臺(tái)接口參數(shù)調(diào)試-判斷用戶(hù)行為

2024-05-04 21:49:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

微信開(kāi)發(fā)的時(shí)候,發(fā)現(xiàn)有個(gè)重要的變量$postObj,獲得了一個(gè)xml結(jié)構(gòu)裝入的對(duì)象里因?yàn)橛脩?hù)發(fā)來(lái)的事件,之前只知道用戶(hù)發(fā)送一個(gè)消息,我進(jìn)行處理.

今天要弄個(gè)用戶(hù)訂閱就給推送一個(gè)消息的功能,卻發(fā)現(xiàn)不知道如何判斷用戶(hù)是訂閱的操作,還是取消訂閱,還是發(fā)消息,代碼如下:

  1. public function responseMsg() 
  2.    { 
  3.     global $db
  4. //get post data, May be due to the different environments 
  5. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  6. $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  7. writeover("msg.txt",$postStr."rn","a+"); 
  8. 。。。。。 
  9.  } 

發(fā)現(xiàn)$postStr是之前沒(méi)有封裝的字符串,直接打印,即可知道用戶(hù)的行為了,測(cè)試輸出的文件如下:

  1. <xml><ToUserName><![CDATA[gh_a64528aca3b]]></ToUserName> 
  2. <FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVaSyk]]></FromUserName> 
  3. <CreateTime>1394705044</CreateTime> 
  4. <MsgType><![CDATA[text]]></MsgType> 
  5. <Content><![CDATA[ha]]></Content> 
  6. <MsgId>5990212551746m.survivalescaperooms.com353512</MsgId> 
  7. </xml> 

MsgType即可判斷用戶(hù)行為text表示用戶(hù)輸入了一條文本信息,如果是訂閱,那么就是event 大家自己測(cè)試吧.

一個(gè)新用戶(hù)關(guān)注公眾賬號(hào)發(fā)送的消息的例子,代碼如下:

  1. <xml><ToUserName><![CDATA[gh_a5218aca3b]]></ToUserName> 
  2. <FromUserName><![CDATA[oSgH_jveTxJSlFK_6QSiGeVyk]]></FromUserName> 
  3. <CreateTime>1394706271</CreateTime> 
  4. <MsgType><![CDATA[event]]></MsgType> 
  5. <Event><![CDATA[subscribe]]></Event> 
  6. <EventKey><![CDATA[]]></EventKey> 
  7. </xml> 

這樣就可以得到具體的事件類(lèi)型了.

$msgtype = $postObj->MsgType;能判斷用戶(hù)的行為,后續(xù)的操作就方便多了.

附上寫(xiě)入日志文件的代碼:

‘r’ 只讀方式打開(kāi),將文件指針指向文件頭。

‘r+’ 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭。

‘w’ 寫(xiě)入方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。

‘w+’ 讀寫(xiě)方式打開(kāi),將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創(chuàng)建之。

‘a’ 寫(xiě)入方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。

‘a+’ 讀寫(xiě)方式打開(kāi),將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之。

PHP實(shí)例代碼如下:

  1. function writeover2($filename,$data,$method="rb+",$iflock=1)  
  2. {  
  3.     @touch($filename);/*文件不存在則創(chuàng)建之.可以采用file_exists驗(yàn)證并其他創(chuàng)建文件函數(shù)代替.測(cè)試結(jié)果效率相當(dāng)*/  
  4.     $handle=@fopen($filename,$method);  
  5.     if($iflock){  
  6.         flock($handle,LOCK_EX);  
  7.     }  
  8.     fwrite($handle,$data);  
  9.     if($method=="rb+") ftruncate($handle,strlen($data));  
  10.     fclose($handle);  
  11. }

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌什县| 察雅县| 巴楚县| 鲜城| 九江市| 民县| 泰州市| 界首市| 冷水江市| 大连市| 仁布县| 海南省| 临潭县| 莎车县| 昌江| 长沙县| 武义县| 丰原市| 通渭县| 南陵县| 金昌市| 寻乌县| 石嘴山市| 江陵县| 壶关县| 德昌县| 兴化市| 信阳市| 台江县| 澄江县| 元朗区| 双城市| 新闻| 五家渠市| 平泉县| 赞皇县| 江北区| 辉县市| 苍梧县| 三台县| 南川市|