微信公众平台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;
}
}
}