微信公众平台DEMO(PHP)
本人在SAE环境下搭建了CI框架(其实这个小东西用不着用框架的),直接把代码写在了控制器里面
<?phpif(!defined('BASEPATH'))exit('Nodirectscriptaccessallowed'); //defineyourtoken define("TOKEN","109"); classWelcomeextendsCI_Controller{ publicfunctionindex() { /* $this->load->helper('url'); $this->load->view('welcome_message'); */ //usechatresponse $this->responseMsg(); } //chatresponse publicfunctionresponseMsg() { //getpostdata,Maybeduetothedifferentenvironments $postStr=$GLOBALS["HTTP_RAW_POST_DATA"]; //extractpostdata if(!empty($postStr)){ $postObj=simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA); $fromUsername=$postObj->FromUserName; $toUsername=$postObj->ToUserName; $MsgType=$postObj->MsgType; $time=time(); switch($MsgType){ case('text'): $keyword=trim($postObj->Content); $textTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; switch($keyword){ case(1): //Needtooptimize //randomreaddatafromjokes $sql='SELECT*FROMjokes'; $query=$this->db->query($sql); $res=$query->result_array(); $num_rows=$query->num_rows(); $key=rand(0,$num_rows-1);//Notice:Thevalueofkeyisfrom0. //$contentStr=$key.'#'.$res[$key]['content'];//debug $contentStr=$res[$key]['content']; break; case(2): $contentStr='YourfromUsernameis:'.$fromUsername; break; case(3): $newsTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>2</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> </xml>"; $resultStr=sprintf($newsTpl,$fromUsername,$toUsername,$time,'news', '百度','','http://www.baidu.com/img/bdlogo.gif','http://www.baidu.com', 'Google','','','http://www.google.com');//Notice:Google'slogoisnotsuitable. echo$resultStr; exit;//Notice:It'sexit,notbreak. case(4): $contentStr="该功能正在开发中,敬请期待..."; break; /*others*/ default: $contentStr="回复数字选择服务\n"; $contentStr.="1笑话精选\n"; $contentStr.="2获取您的Username...\n"; $contentStr.="3图文消息示例\n"; $contentStr.="4开发中...\n"; break; } $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,'text',$contentStr); break; case('image'): $media_id=$postObj->MediaId; $imgTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> </xml>"; $resultStr=sprintf($imgTpl,$fromUsername,$toUsername,$time,'image',$media_id); break; //trygettheidofthereceiveimageandanalyse /* $media_id=$postObj->MediaId; $textTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $length=strlen($media_id); $contentStr="Ihavereceivedtheimagemessageyousent,theidofthisimageis#$media_id#,andthelengthofmedia_idis#$length#"; $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,'text',$contentStr); break; */ case('voice'): $textTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $contentStr='你说啥?俺听不见...'; $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,'text',$contentStr); break; /*others*/ default: $resultStr="Inputsomething..."; break; } echo$resultStr; }else{ echo""; exit; } } }