PHP+Mysql无刷新问答评论系统(源码)
自己写的一个评论系统源码分享给大家,包括有表情,还有评论机制。用户名是随机的
针对某一篇文章进行评论
functionsubcomment(){
$data['uid']=getUserid();
$data['mtype']=I("post.mtype",0,'int');
if($data['uid']==''){
echojson_encode(array("code"=>-1));
}else{
$content=addslashes(str_replace("\n","<br/>",$_POST['content']));
$data['tid']=I("post.id",0,'int');//文章id
if(strlen(preg_replace('/\[[^\)]+?\]/x','',$content))<10){
echojson_encode(array("code"=>"shortthan10","error"=>"评论的内容不能少于10个字符。"));
exit;
}
if(C("DB_PWD")!=''){
if(time()-session("comment_time")<60&&session("comment_time")>0){//2分钟以后发布
echojson_encode(array("code"=>"fast","error"=>"您提交评论的速度太快了,请稍后再发表评论。"));
exit;
}
}
$data['pid']=I("post.pid",0,'int');
$data['pid_sub']=I("post.pid_sub",0,'int');
$lyid=$data['pid_sub']>0?$data['pid_sub']:$data['pid'];
if($lyid>0){
$lyinfo=M("comment")->field("uid")->where("id='".$lyid."'")->find();
$data['touid']=$lyinfo['uid'];
}else{
$data['touid']=2;
}
$data['addtime']=time();
$emots=getTableFile("emot");
foreach($emotsas$v){
$content=str_replace("[".$v['name']."]","<imgalt='".$v['name']."'src='".__APP__."/Public/emot/".($v['id']-1).".gif'>",$content);
}
$data['content']=addslashes($content);
$info=M("comment")->field("id")->where("content='".$data['content']."'")->find();
if($info['id']){
echojson_encode(array("code"=>"comment_repeat","error"=>"检测到重复评论,您似乎提交过这条评论了"));
exit;
}
$lastid=M("comment")->add($data);
$points_comment=20;
if($lastid>0){
$day_start=strtotime(date("Y-m-d"));
$day_end=$day_start+3600*24;
$comment_num_day=M("comment")->where("uid=".$data['uid']."ANDaddtimebetween".$day_start."AND".$day_end."")->count();
if($comment_num_day<=5){//少于5条每天,则添加积分
//addPoints("comment",$points_comment,$data['uid'],"评论获得".$points_comment."积分",5,1);
}
//addMessage('comment',$data['tid'],$data['pid'],$data['mtype'],$data['touid'],$content);
}
session("comment_time",time());
echojson_encode(array("code"=>200,"comment"=>$content,"points"=>$points_comment));
}
}
根据分页参数获取对应评论列表
functioncomments(){
$id=I("get.id",0,'int');
$mtype=I("get.mtype",1,'int');
$page=I("get.page",1,"int");
$totalnum=I("get.totalnum",1,"int");
$start=10*($page-1);
$sql="tid=".$id."ANDpid=0";
$comments=M("comment")->field("id,uid,content,addtime")->where($sql)->order("idDESC")->limit($start.",10")->select();
//echoM("comment")->getlastsql();
foreach($commentsas$k=>$v){
$comments[$k]['sub']=M("comment")->field("id,uid,content,pid_sub")->where("tid=".$id."ANDpid=".$v['id']."")->order("idASC")->select();
}
$this->assign("id",$id);
$this->assign("mtype",$mtype);
$this->assign("comments",$comments);
$this->assign("comments_num",$totalnum-($page-1)*10);
$this->display();
}
切换评论分页
if($("#detail-page").length>0){
varid=$("#detail-page").attr("data-id");
varmtype=$("#detail-page").attr("data-mtype");
vartotalnum=$("#detail-page").attr("data-totalnum");
$("#detail-page").children("a").click(function(){
varpage=parseInt($(this).attr("data-page"));
$("#detail-page").children("a").removeClass("current");
$("#detail-page").children("a").eq(page-1).addClass("current");
$("#comment_list").html("<divstyle='padding:20px0;text-align:center;'><imgsrc='"+site_url+"Public/images/loading.gif'></div>");
$.get(getUrl("Box/comments"),{
page:page,
id:id,
totalnum:totalnum,
mtype:mtype
},
function(data){
$("#comment_list").html(data)
})
})
}
评论表和表情表已放在压缩包里
CREATETABLEIFNOTEXISTS`sucai_comment`( `id`int(11)NOTNULLAUTO_INCREMENT, `uid`int(11)NOTNULL, `touid`int(11)DEFAULT'0', `pid_sub`int(11)DEFAULT'0', `tid`int(11)NOTNULL, `pid`int(11)DEFAULT'0', `mtype`tinyint(1)NOTNULL, `content`textNOTNULL, `addtime`int(10)NOTNULL, PRIMARYKEY(`id`) )ENGINE=MyISAMDEFAULTCHARSET=utf8AUTO_INCREMENT=5560;
功能实现和demo原址:www.erdangjiade.com/js/816.html