PHP+Mysql无刷新问答评论系统(源码)


Posted in PHP onDecember 20, 2016

自己写的一个评论系统源码分享给大家,包括有表情,还有评论机制。用户名是随机的

针对某一篇文章进行评论

function subcomment() { 
  $data['uid'] = getUserid(); 
  $data['mtype'] = I("post.mtype", 0, 'int'); 
  if ($data['uid'] == '') { 
    echo json_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) { 
      echo json_encode(array("code" => "short than 10", "error" => "评论的内容不能少于10个字符。")); 
      exit; 
    } 
    if (C("DB_PWD") != '') { 
      if (time() - session("comment_time") < 60 && session("comment_time") > 0) {//2分钟以后发布 
        echo json_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 ($emots as $v) { 
      $content = str_replace("[" . $v['name'] . "]", "<img alt='" . $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']) { 
      echo json_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'] . " AND addtime between " . $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()); 
    echo json_encode(array("code" => 200, "comment" => $content, "points" => $points_comment)); 
  } 
}

根据分页参数获取对应评论列表

function comments() { 
  $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 . " AND pid = 0"; 
  $comments = M("comment")->field("id,uid,content,addtime")->where($sql)->order("id DESC")->limit($start . ",10")->select(); 
//    echo M("comment")->getlastsql(); 
  foreach ($comments as $k => $v) { 
    $comments[$k]['sub'] = M("comment")->field("id,uid,content,pid_sub")->where("tid = " . $id . " AND pid = " . $v['id'] . "")->order("id ASC")->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) { 
  var id = $("#detail-page").attr("data-id"); 
  var mtype = $("#detail-page").attr("data-mtype"); 
  var totalnum = $("#detail-page").attr("data-totalnum"); 
  $("#detail-page").children("a").click(function() { 
    var page = parseInt($(this).attr("data-page")); 
    $("#detail-page").children("a").removeClass("current"); 
    $("#detail-page").children("a").eq(page - 1).addClass("current"); 
    $("#comment_list").html("<div style='padding:20px 0;text-align:center;'><img src='" + 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) 
    }) 
  }) 
}

评论表和表情表已放在压缩包里

CREATE TABLE IF NOT EXISTS `sucai_comment` ( 
 `id` int(11) NOT NULL AUTO_INCREMENT, 
 `uid` int(11) NOT NULL, 
 `touid` int(11) DEFAULT '0', 
 `pid_sub` int(11) DEFAULT '0', 
 `tid` int(11) NOT NULL, 
 `pid` int(11) DEFAULT '0', 
 `mtype` tinyint(1) NOT NULL, 
 `content` text NOT NULL, 
 `addtime` int(10) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=5560 ;

功能实现和demo原址:www.erdangjiade.com/js/816.html

PHP 相关文章推荐
VFP与其他应用程序的集成
Oct 09 PHP
php preg_match_all结合str_replace替换内容中所有img
Oct 11 PHP
PHP调用Twitter的RSS的实现代码
Mar 10 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
May 08 PHP
简单的php文件上传(实例)
Oct 27 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
Jul 28 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
PHP实现的随机红包算法示例
Aug 14 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
Jul 17 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 #PHP
php获取POST数据的三种方法实例详解
Dec 20 #PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
Dec 19 #PHP
Discuz论坛密码与密保加密规则
Dec 19 #PHP
yii框架搜索分页modle写法
Dec 19 #PHP
YII框架中搜索分页jQuery写法详解
Dec 19 #PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 #PHP
You might like
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP中使用addslashes函数转义的安全性原理分析
2014/11/03 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
PHP创建XML接口示例
2019/07/04 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
jQuery EasyUI API 中文文档 搜索框
2011/09/29 Javascript
javascript中节点的最近的相关节点访问方法
2013/03/20 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
微信小程序基于本地缓存实现点赞功能的方法
2017/12/18 Javascript
详解webpack 最简打包结果分析
2019/02/20 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
详解Nuxt.js中使用Element-UI填坑
2019/09/06 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
JavaScript函数IIFE使用详解
2019/10/21 Javascript
详解使用python crontab设置linux定时任务
2016/12/08 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
python排序函数sort()与sorted()的区别
2018/09/18 Python
python编程使用协程并发的优缺点
2018/09/20 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
Python中and和or如何使用
2020/05/28 Python
历史专业个人求职信分享
2013/12/20 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
《藏戏》教学反思
2014/02/11 职场文书
招商引资工作汇报
2014/10/28 职场文书
大连导游词
2015/02/12 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
浅析NIO系列之TCP
2021/06/15 Java/Android