在框架中最好在设置下时区。
首先验证token成功。
接下来就要解析提交过来的数据,此函数我是写到commen.php控制器中的,因为每次获取用户信息都是经过这个函数来获取的。所以写到了公共控制器中的。在用到的控制器中只管调用就行。
public function parseXml($postStr){
if (!empty($postStr)){// 解析微信传过来的 XML 内容
$post_obj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
}else{
$post_obj='';
}
return $post_obj;
}
我在admin.php控制器中这样使用
$postStr=$GLOBALS['HTTP_RAW_POST_DATA'];
$post_obj=$this->parseXml($postStr);
if(!empty($post_obj)){// 解析微信传过来的 XML 内容
$from_username = $post_obj->FromUserName;//获取用户openid
$to_username = $post_obj->ToUserName;//微信开发者id
$keyword = trim($post_obj->Content);// $keyword 就是用户输入的内容
$MsgType=trim($post_obj->MsgType);//获取信息类型
$e=$post_obj->Event;//获取事件
$type=‘text';
switch ($MsgType){
case "text": //文本类型的消息
$content=$this->_parseMessage($keyword);
break;
default:
$content='说点什么吧....';
}
//在这里要把数据内容回复给用户
$data = array(
'to' => $from_username,
'from' => $to_username,
'type' => $type,
'content' => $content,
);
//在模板中写xml格式,当然也可以在控制器中写。
$this->load->view('admin/index', $data);
}
public _parseMessage(){ //自动把用户发送的消息回复,当然你也可以设置自己要回复的内容。
return '你发送的消息是:'.$keyworld;
}
//// view下的index.php
<xml>
<ToUserName><![CDATA[<?php echo $to;?>]]></ToUserName>
<FromUserName><![CDATA[<?php echo $from;?>]]></FromUserName>
<CreateTime><?php echo time();?></CreateTime>
<MsgType><![CDATA[<?php echo $type;?>]]></MsgType>
<Content><![CDATA[<?php echo $content;?>]]></Content>
<FuncFlag>0</FuncFlag>
</xml>
好了,这个是ci框架下的微信公众平台开发。如有问题请交流qq:905766491