最近在做微信公众平台上做个微信留言的功能。遇到的一些问题和解决方法,分享给大家。
说明:用的是CI框架
首先是配置文件中
autoload.php中
$autoload['libraries'] = array('database', 'session');
$autoload['helper'] = array('url');
config.php中
$config['base_url'] = 'http://www.xxxx.tk';//用的是免费域名 自己的项目域名
$config['encryption_key'] = 'weixin';//关于session的key 随便设置就行
$config['sess_encrypt_cookie'] = TRUE;//当时没有设置为true ,导致session不起作用了。
//接下来就是正式的开发了
首先我是在自定义才上做了个微留言的菜单。
json格式的自定义菜单
$data = '{
"button":[
{
"name":"web微盟",
"sub_button":[
{
"type":"click",
"name":"微留言",
"key":"microMessage"
}]
}]
}
根据类型来判断
$MsgType=trim($post_obj->MsgType);//获取信息类型
$e=$post_obj->Event;//获取事件
switch($MsgType){
case "event":
if($e=="CLICK"){
$eventKey=$post_obj->EventKey;
switch ($eventKey) {
case 'microMessage':
$content=$this->receiveMessage($post_obj);
break;
}
}
break;
if($e=="CLICK" && $eventKey=='microMessage'){
$data = array(
'to' => $from_username,
'from' => $to_username,
'type' => 'news',
'content' =>$content,
'time'=>time(),
'num'=>1,
'title'=>"微留言",
'picurl'=>base_url('/public/admin/image/main.jpg'),
'url'=>site_url("/admin/mes/".$from_username),
//尤其是这里一定要注意了。把from_username也就是用户的openid,当时就是想把用户的openid存入数据库,这个是图文消息的图片url,把用户的openid带上就可以了,然后再前台把这个openid写到input的隐藏域中,我用的是ajax提交,在提交的时候重新获取,同用户输入的标题和内容一块提交后台的控制器中最后存入数据库中,到时候做回复也比较容易。
);
$this->load->view('admin/imagetext', $data);
}
}
public function mes($parm){
$data['id']=$parm;
$this->load->view('admin/mes',$data);
}
//图文消息的内容
public function receiveMessage($obj){
$contentStr="点击进入留言页面,赶快点击吧。";
return $contentStr;
}
//模板代码
<input type="hidden" value="<?php echo $id;?>" id="oid">
<input name="wxname" type="text" class="px" id="wxname1" placeholder="请输入您的昵称" />
<textarea name="info" class="pxtextarea" style=" height:60px;" id="info1" placeholder="请输入留言" /></textarea>
ajax提交格式
var wxname = $("#wxname1").val();
var info = $("#info1").val();
var openid = $("#oid").val();
var submitData = {
wxname:wxname,
message: info,
openid:openid
};
var url="<?php echo site_url('admin/addInfo');?>"; //一定要注意颜色的部分。
$.post(url, submitData,
function(data) {
if (data.success == true) {
alert(data.msg);
setTimeout('window.location.href=location.href',1000);
return;
} else {}
},
"json")
//最后处理并入库 控制器中处理。
$data=$this->input->post();
$res=$this->Mesinfo_model->insertMessage($data);
if($res){
$arr=array('success'=>true,'msg'=>'留言成功');
echo json_encode($arr);
}
好了,这些是我的一些小小的经验。大家有什么想法或者意见请评论或者qq:905766491