1. SAE 數據庫的連接。
需要主機名和端口,以后的使用是一樣的。
@ $db = new mysqli(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS,'你的應用名');
2.XML 的處理。
微信發送的消息格式都是 XML 格式,你返回的消息也必須是 XML 格式。從 XML 里提取數據,用 SimpleXML,強大又容易使用。包裝成 XML 消息呢?把消息模板保存為字符串,然后用 sprintf 進行格式化輸出。
解析微信服務器 POST 的數據:
//---------- 接 收 數 據 ---------- // $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //獲取POST數據 //用SimpleXML解析POST過來的XML數據 $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; //獲取發送方帳號(OpenID) $toUsername = $postObj->ToUserName; //獲取接收方賬號 $msgType = $postObj->MsgType; //消息內容
返回文本消息:
function sendText($to, $from, $content, $time) { //返回消息模板 $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>"; //格式化消息模板 $msgType = "text"; $time = time(); $resultStr = sprintf($textTpl,$to,$from, $time,$msgType,$content); echo $resultStr; } 3. API 接口的調用。
網上有很多 API 接口,如百度翻譯,有道翻譯,天氣預報等,對接口的調用可以直接用 file_get_contents ,也可以用 curl 的方式進行抓取,然后根據返回數據的格式進行數據解析,一般都是 xml 格式或者 json 格式,處理時用 SimpleXML 和 json_decode 是很方便的。對于抓取 API 內容,用重新封裝的函數:
function my_get_file_contents($url){ if(function_exists('file_get_contents')){ $file_contents = file_get_contents($url); } else { //初始化一個cURL對象 $ch = curl_init(); $timeout = 5; //設置需要抓取的URL curl_setopt ($ch, CURLOPT_URL, $url); //設置cURL 參數,要求結果保存到字符串中還是輸出到屏幕上 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); //在發起連接前等待的時間,如果設置為0,則無限等待 curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //運行cURL,請求網頁 $file_contents = curl_exec($ch); //關閉URL請求 curl_close($ch); } return $file_contents; } 百度翻譯 API 的調用如下:function baiduDic($word,$from="auto",$to="auto"){ //首先對要翻譯的文字進行 urlencode 處理 $word_code=urlencode($word); //注冊的API Key $appid="yourAPIkey"; //生成翻譯API的URL GET地址 $baidu_url = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".$appid."&q=".$word_code."&from=".$from."&to=".$to; $text=json_decode(my_get_file_contents($baidu_url)); $text = $text->trans_result; return $text[0]->dst; }
新聞熱點
疑難解答