1 <?php 2 define("APPID","wx123456");//填寫本身的APPID 3 define("APPSECRET","abcdefg");//填寫本身的APPSECRET 4 define("TOKEN", "token");//token隨便填,只要一致就行。 5 $wechat = new wechat(); 6 $wechat->valid();//微信公衆號安全驗證 7 8 class wechat{ 9 private $_appid; 10 private $_appsecret; 11 private $_token; 12 public function __construct(){ 13 $this->_appid =APPID; 14 $this->_appsecret =APPSECRET; 15 $this->_token =TOKEN; 16 } 17 /** 18 *接入微信平臺時驗證 19 **/ 20 public function valid()//檢查安全性 21 { 22 $echoStr = $_GET["echostr"]; 23 24 //valid signature , option 25 if($this->checkSignature()){//檢查簽名是否一致 26 echo $echoStr;//驗證成功後,輸出 27 exit; 28 } 29 } 30 /** 31 *驗證簽名 32 **/ 33 private function checkSignature() 34 { 35 $signature = $_GET["signature"]; 36 $timestamp = $_GET["timestamp"]; 37 $nonce = $_GET["nonce"]; 38 $token = TOKEN; 39 $tmpArr = array($token, $timestamp, $nonce); 40 sort($tmpArr, SORT_STRING); 41 $tmpStr = implode( $tmpArr ); 42 $tmpStr = sha1( $tmpStr ); 43 44 if( $tmpStr == $signature ){ 45 return true; 46 }else{ 47 return false; 48 } 49 } 50 }
MsgType
|
Event
|
信息類型
|
text
|
|
用戶發送了文本消息
|
image
|
|
用戶發送了圖片消息
|
voice
|
|
用戶發送了語音消息
|
video
|
|
用戶發送了視頻消息
|
shortvideo
|
|
用戶發送了小視頻消息
|
location
|
|
用戶發送了地理位置消息
|
link
|
|
用戶發送了鏈接消息
|
event
|
subscribe
|
用戶關注了公衆號
|
event
|
unsubscribe
|
用戶取消關注了公衆號
|
event
|
subscribe+ EventKey
|
用戶經過掃描帶參二維碼關注了公衆號
|
event
|
SCAN
|
已關注公衆號的用戶掃描了帶參數二維碼
|
event
|
LOCATION
|
用戶進入公衆號時上報地理位置
|
event
|
CLICK
|
用戶點擊菜單拉取消息
|
event
|
VIEW
|
用戶點擊菜單跳轉連接
|
ToUserName
|
開發者微信號,是接收推送的開發者
|
FromUserName
|
發送方賬號(一個OpenID),用戶相對於公衆號的惟一標識
|
直接修改wechatMsgAction.php,添加事件處理函數,並使微信公衆號推送事件調用該函數。php
1 define("APPID","wx123456");//填寫本身的APPID 2 define("APPSECRET","abcdefg");//填寫本身的APPSECRET 3 define("TOKEN", "token");//token隨便填,只要一致就行。 4 $wechat = new wechat(); 5 $WeChatMessage->Action();//不一樣於第三步的調用,此處是處理事件的函數 6 class WeChatMessage{ 7 public function Action(){ 8 /*得到請求時POST:XML字符串不能用$_POST獲取,由於沒有key*/ 9 $xml_str = $GLOBALS['HTTP_RAW_POST_DATA']; 10 if(empty($xml_str)){ 11 die(''); 12 } 13 if(!empty($xml_str)){ 14 // 解析該xml字符串,利用simpleXML 15 libxml_disable_entity_loader(true); 16 //禁止xml實體解析,防止xml注入 17 $request_xml = simplexml_load_string($xml_str, 'SimpleXMLElement', LIBXML_NOCDATA); 18 //判斷該消息的類型,經過元素MsgType 19 switch ($request_xml->MsgType){ 20 case 'event': 21 //判斷具體的時間類型(關注、取消、點擊) 22 $event = $request_xml->Event; 23 $Ticket = $request_xml->Ticket; 24 if ($event=='subscribe'&&$Ticket=='') { // 普通關注事件 25 $this->_doSubscribe($request_xml); 26 } 27 if ($event=='subscribe'&&$Ticket!='') {//掃描渠道二維碼關注 28 $this->_doQRSubscribe($request_xml); 29 } 30 if ($event=='SCAN'&&$Ticket!='') {//已關注公衆號掃描渠道二維碼事件 31 $this->_doSCAN($request_xml); 32 } 33 break; 34 case 'text'://文本消息 35 $this->_doText($request_xml); 36 break; 37 case 'image'://圖片消息 38 $this->_doImage($request_xml); 39 break; 40 case 'voice'://語音消息 41 $this->_doVoice($request_xml); 42 break; 43 case 'video'://視頻消息 44 $this->_doVideo($request_xml); 45 break; 46 case 'shortvideo'://短視頻消息 47 $this->_doShortvideo($request_xml); 48 break; 49 case 'location'://位置消息 50 $this->_doLocation($request_xml); 51 break; 52 case 'link'://連接消息 53 $this->_doLink($request_xml); 54 break; 55 } 56 } 57 } 58 }
1 //初始化 2 $curl = curl_init(); 3 //設置抓取的url 4 curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com'); 5 //設置頭文件的信息做爲數據流輸出 6 curl_setopt($curl, CURLOPT_HEADER, 1); 7 //設置獲取的信息以文件流的形式返回,而不是直接輸出。 8 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 9 //執行命令 10 $data = curl_exec($curl); 11 //關閉URL請求 12 curl_close($curl); 13 //顯示得到的數據 14 print_r($data);
1 //初始化 2 $curl = curl_init(); 3 //設置抓取的url 4 curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com'); 5 //設置頭文件的信息做爲數據流輸出 6 curl_setopt($curl, CURLOPT_HEADER, 1); 7 //設置獲取的信息以文件流的形式返回,而不是直接輸出。 8 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 9 //設置post方式提交 10 curl_setopt($curl, CURLOPT_POST, 1); 11 //設置post數據 12 $post_data = array( 13 "username" => "coder", 14 "password" => "12345" 15 ); 16 curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); 17 //執行命令 18 $data = curl_exec($curl); 19 //關閉URL請求 20 curl_close($curl); 21 //顯示得到的數據 22 print_r($data);