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 项目的方法
Jan 02 PHP
mysql 搜索之简单应用
Apr 27 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
163的邮件用phpmailer发送(实例详解)
Jun 24 PHP
PHP垃圾回收机制引用计数器概念分析
Jun 24 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
Yii2实现UploadedFile上传文件示例
Feb 15 PHP
php可变长参数处理函数详解
Feb 22 PHP
完美的php分页类
Oct 24 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 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
php 获取select下拉列表框的值
2010/05/08 PHP
php实现删除空目录的方法
2015/03/16 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
Javascript 兼容firefox的一些问题
2009/05/21 Javascript
javascript中利用数组实现的循环队列代码
2010/01/24 Javascript
IE8下关于querySelectorAll()的问题
2010/05/13 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
JavaScript中扩展Array contains方法实例
2020/08/23 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
angular1.x ui-route传参的三种写法小结
2018/08/31 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
[46:09]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第三场
2014/05/26 DOTA
Python3网络爬虫之使用User Agent和代理IP隐藏身份
2017/11/23 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
python3.6数独问题的解决
2019/01/21 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
calendar在python3时间中常用函数举例详解
2020/11/18 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
我们是伦敦女孩:WalG
2018/01/08 全球购物
进程的查看和调度分别使用什么命令
2015/03/25 面试题
竞选宣传委员演讲稿
2014/05/24 职场文书
新法人代表任命书
2014/06/06 职场文书
岗位职责说明书模板
2014/07/30 职场文书
优秀英文求职信范文
2015/03/19 职场文书
晚会开场白和结束语
2015/05/29 职场文书
英语版自我评价,35句话轻松搞定
2019/10/08 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
如何创建一个创建MySQL数据库中的datetime类型
2022/03/21 MySQL
JS实现数组去重的11种方法总结
2022/04/04 Javascript