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 相关文章推荐
php基础知识:类与对象(5) static
Dec 13 PHP
php 目录与文件处理-郑阿奇(续)
Jul 04 PHP
PHP中date()日期函数有关参数整理
Jul 19 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
php异常处理使用示例
Feb 25 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php JWT在web端中的使用方法教程
Sep 06 PHP
Thinkphp自定义生成缩略图尺寸的方法
Aug 05 PHP
Laravel相关的一些故障解决
Aug 19 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
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
php封装一个异常的处理类
2017/06/08 PHP
jQuery使用手册之 事件处理
2007/03/24 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
bootstrap-treeview自定义双击事件实现方法
2016/01/09 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
详解Node.js项目APM监控之New Relic
2017/05/12 Javascript
原生JS实现移动端web轮播图详解(结合Tween算法造轮子)
2017/09/10 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
python检测远程服务器tcp端口的方法
2015/03/14 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
Python装饰器用法示例小结
2018/02/11 Python
用Python批量把文件复制到另一个文件夹的实现方法
2019/08/16 Python
在Keras中CNN联合LSTM进行分类实例
2020/06/29 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
Does C# support multiple inheritance? (C#支持多重继承吗)
2012/01/04 面试题
六一儿童节演讲稿
2014/05/23 职场文书
心理咨询专业自荐信
2014/07/07 职场文书
小学家长学校培训材料
2014/08/24 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
七一建党节慰问信
2015/02/14 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
婚宴致辞
2015/07/28 职场文书
学校安全管理制度
2015/08/06 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP