關注和取消關注php
<?php define("APPID","wx4cff8e15a7a0801d");//填寫本身的APPID define("APPSECRET","4d7cb4b8b54412d9ef0c6a7c011cd570");//填寫本身的APPSECRET define("TOKEN", "weixin");//token隨便填,只要一致就行。 $wechat = new wechat(); $wechat->responseMsg(); class wechat{ private $_appid; private $_appsecret; private $_token; private $tpl=array( //發送文本消息模板 'text' => ' <xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>', ); public function __construct(){ $this->_appid =APPID; $this->_appsecret =APPSECRET; $this->_token =TOKEN; } /** *響應微信平臺發送的消息 **/ public function responseMsg()//全部的被動消息處理都從這裏開始 { $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//得到用戶發送信息 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);//解析XML到對象 switch($postObj->MsgType){ case 'text': //文本處理 $this->_doText($postObj); break; case 'event': //事件處理 $this->_doEvent($postObj); break; default: exit; } } /** *_doText():處理文本消息 *@postObj:響應的消息對象 **/ private function _doText($postObj) { $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); if(!empty( $keyword )) { $contentStr='hello world!'; exit; //這裏能夠作一些業務處理 if($keyword == "hello") $contentStr = "Welcome to wechat world!"; $msgType = "text"; $resultStr = sprintf($this->tpl['text'], $fromUsername, $toUsername, $time, $contentStr); echo $resultStr; } exit; } /** *_doEvent():處理事件消息 *@postObj:響應的消息對象 **/ private function _doEvent($postObj){ //事件處理 switch($postObj->Event){ case 'subscribe': //訂閱 $this->_doSubscribe($postObj); break; case 'unsubscribe': //取消訂閱 $this->_doUnsubscribe($postObj); break; default:; } } /** *處理關注事件 *@postObj:響應的消息對象 **/ private function _doSubscribe($postObj){ $contentStr='歡迎您關注個人公衆號!'; $str = sprintf($this->tpl['text'],$postObj->FromUserName,$postObj->ToUserName,time(),$contentStr); //還能夠保存用戶的信息到數據庫 echo $str; } /** *處理取消關注事件 *@postObj:響應的消息對象 **/ private function _doUnsubscribe($postObj){ //把用戶的信息從數據庫中刪除 //獲取用戶的openid,在進行一些業務操做 file_put_contents('useropenid.txt',$postObj->FromUserName); } }