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 相关文章推荐
模拟xcopy的函数
Oct 09 PHP
从网上搜到的phpwind 0day的代码
Dec 07 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
初次接触php抽象工厂模式(Elgg)
Mar 21 PHP
PHP+ACCESS 文章管理程序代码
Jun 21 PHP
php像数组一样存取和修改字符串字符
Mar 21 PHP
推荐5款跨平台的PHP编辑器
Dec 25 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
利用PHP如何写APP接口详解
Aug 23 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
Jun 03 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 header Content-Type类型小结
2011/07/03 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
使用PHP+MySql实现微信投票功能实例代码
2017/09/29 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
2013/04/24 Javascript
Bootstrap基础学习
2015/06/16 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
js实现日历的简单算法
2017/01/24 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
vue引入ueditor及node后台配置详解
2018/01/03 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
JS获取本地地址及天气的方法实例小结
2019/05/10 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
BudgetAir印度:预订航班、酒店和汽车租赁
2019/07/07 全球购物
什么是Smart Navigation?
2016/07/03 面试题
办理居住证介绍信
2014/01/15 职场文书
学生评语大全
2014/04/18 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
基于Redis过期事件实现订单超时取消
2021/05/08 Redis
Redis集群的关闭与重启操作
2021/07/07 Redis
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
python处理json数据文件
2022/04/11 Python