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注销代码(session注销)
May 31 PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
PHP删除数组中空值的方法介绍
Apr 14 PHP
PHP生成数组再传给js的方法
Aug 07 PHP
如何让CI框架支持service层
Oct 29 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 PHP
php实现多维数组排序的方法示例
Mar 23 PHP
php实现用户登陆简单实例
Apr 04 PHP
php实现获取近几日、月时间示例
Jul 06 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 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
递归列出所有文件和目录
2006/10/09 PHP
使用无限生命期Session的方法
2006/10/09 PHP
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
php读取和保存base64编码的图片内容
2017/04/22 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
2017/05/05 PHP
Javascript 圆角div的实现代码
2009/10/15 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
js实现兼容IE和FF的上下层的移动
2015/05/04 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
表格展示利器 Bootstrap Table实例代码
2017/09/06 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
Python开发的单词频率统计工具wordsworth使用方法
2014/06/25 Python
Python素数检测实例分析
2015/06/15 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
200行python代码实现2048游戏
2019/07/17 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Python实现分数序列求和
2020/02/25 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
公司综合部的成员自我评价分享
2013/11/05 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
珍惜水资源建议书
2014/03/12 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
判缓刑人员个人思想汇报
2014/10/10 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
2015年统战工作总结
2015/05/19 职场文书
MySQL不使用order by实现排名的三种思路总结
2021/06/02 MySQL
一文搞懂python异常处理、模块与包
2021/06/26 Python
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB