你想为你的博客或者网站添加的在线聊天功能,为你的用户提供技术支持,或者不仅仅是客服功能,让你的用户能够相互交流,增强网站或者博客互动功能,这里为大家介绍1个为博客或者网站打造的聊天工具,只要您懂得thinkphp就能看得懂此段代码。主要实现的方法是thinkphp+ajax,不在赘述直接贴出代码:
数据库结构:
think_msg 表用来存储聊天记录
DROP TABLE IF EXISTS `think_msg`;
CREATE TABLE IF NOT EXISTS `think_msg` (
`id` int(40) NOT NULL auto_increment COMMENT '信息数目',
`content` text character set utf8 NOT NULL COMMENT '信息内容',
`time` int(50) NOT NULL COMMENT '发送信息时间',
`sender` varchar(20) character set utf8 NOT NULL COMMENT '发送信息人',
`timee` varchar(20) NOT NULL,
`tosend` varchar(50) character set utf8 NOT NULL COMMENT '接收人',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
think_user表 用来存储用户的信息
DROP TABLE IF EXISTS `think_user`;
CREATE TABLE IF NOT EXISTS `think_user` (
`id` mediumint(6) NOT NULL auto_increment,
`nickname` varchar(25) NOT NULL,
`dept_id` smallint(3) NOT NULL,
`account` varchar(20) NOT NULL COMMENT '账号',
`pwd` varchar(50) NOT NULL COMMENT '密码',
`status` int(2) NOT NULL COMMENT '状态:‘0’不在线,‘1’在线,‘2’隐身,‘3’忙碌',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
html代码:
Class IndexAction extends CommentAction{
//登陆默认页面,因继承commentAction故不显示
public function index(){
$this->display();
}
//利用ajaxreturn以JSON方式返回聊天内容数组
public function ajax(){
$data=array();
$Model = new Model();
$data['content']=$_POST['content'];
$data['time']=time();
$data['timee']=date('Y-m-d H:i:s',time());
$data['sender']=session('account');
$dd=M(msg)->data($data)->add();
if($dd){
$dataa=M(msg)->order('id desc')->limit('10')->select();
$this->ajaxReturn($dataa);
}
}
//刷新时获取最新十条聊天内容和在线用户
public function homePage(){
$this->msg=M(msg)->order('id desc')->limit('10')->select();
$this->user=M(user)->where(array('status'=>1))->select();
$this->display();
}
//即时返回最新十条聊天内容
public function fresh(){
$data=M(msg)->order('id desc')->limit('10')->select();
$this->ajaxReturn($data);
}
//即时返回在线用户
public function freshUser(){
$dat=M(user)->where(array('status'=> 1))->select();
$this->ajaxReturn($dat);
}
}
?>
效果图:
源码下载:https://img.111com.net/get_pic/down/thinkphp(www.111com.net)ajax.zip