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和ACCESS写聊天室(六)
Oct 09 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
Jul 22 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
php常用的安全过滤函数集锦
Oct 09 PHP
ThinkPHP模板中数组循环实例
Oct 30 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
PHP中字符安全过滤函数使用小结
2015/02/25 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
基于javascript实现最简单选项卡切换
2017/02/01 Javascript
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
js实现炫酷光感效果
2020/09/05 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python里隐藏的“禅”
2014/06/16 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
python中有关时间日期格式转换问题
2019/12/25 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
html5 svg 中元素点击事件添加方法
2013/01/16 HTML / CSS
美国老牌主机服务商:iPage
2016/07/22 全球购物
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
英国女装网上商店:I Saw It First
2018/10/18 全球购物
医学院毕业生自荐信
2013/11/08 职场文书
成品仓管员岗位职责
2013/12/11 职场文书
机关财务管理制度
2014/01/17 职场文书
领导党性分析材料
2014/02/15 职场文书
《长城和运河》教学反思
2014/04/14 职场文书
运动会入场口号
2014/06/07 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
环保宣传语大全
2015/07/13 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书