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+MSSQL分页的例子
Oct 09 PHP
php实现单链表的实例代码
Mar 22 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
php ImageMagick windows下安装教程
Jan 26 PHP
php实现字符串首字母转换成大写的方法
Mar 17 PHP
php实现模拟post请求用法实例
Jul 11 PHP
weiphp微信公众平台授权设置
Jan 04 PHP
关于PHP中Session文件过多的问题及session文件保存位置
Mar 17 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
PHP中散列密码的安全性分析
Jul 26 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
COM in PHP (winows only)
2006/10/09 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
php格式化金额函数分享
2015/02/02 PHP
php中explode的负数limit用法分析
2015/02/27 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
Javascript UrlDecode函数代码
2010/01/09 Javascript
Javascript倒计时代码
2010/08/12 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
JavaScript继承基础讲解(原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承)
2014/08/16 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
浅析javascript函数表达式
2016/02/10 Javascript
基于JS组件实现拖动滑块验证功能(代码分享)
2016/11/18 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
javascript回调函数详解
2018/02/06 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
解决vue项目router切换太慢问题
2020/07/19 Javascript
学习python 之编写简单乘法运算题
2016/02/27 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
2018/12/21 Python
python浪漫表白源码
2019/04/05 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
pytorch加载语音类自定义数据集的方法教程
2020/11/10 Python
Laravel中Kafka的使用详解
2021/03/24 PHP
小学生暑假感言
2014/02/06 职场文书
地质灾害防治方案
2014/05/14 职场文书
党的群众路线教育实践活动个人整改措施落实情况
2014/11/04 职场文书
八年级英语教学计划
2015/01/23 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL