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文件操作实例代码
May 10 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
浅析php面向对象public private protected 访问修饰符
Jun 30 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
php数组函数array_key_exists()小结
Dec 10 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
php 变量引用与变量销毁机制详细介绍
Dec 05 PHP
Ecshop 后台添加新功能栏目及管理权限设置教程
Nov 21 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
php提取微信账单的有效信息
Oct 01 PHP
PHP析构函数destruct与垃圾回收机制的讲解
Mar 22 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
php5.3 注意事项说明
2013/07/01 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
js根据给定的日期计算当月有多少天实现思路及代码
2013/02/25 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
javascript中对Date类型的常用操作小结
2016/05/19 Javascript
AngularJS 整理一些优化的小技巧
2016/08/18 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
JS实现简单拖拽效果
2017/06/21 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
JS/HTML5游戏常用算法之追踪算法实例详解
2018/12/12 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
VUE动态生成word的实现
2020/07/26 Javascript
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python实现杨辉三角思路
2017/07/14 Python
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
python中bytes和str类型的区别
2019/10/21 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
pandas的resample重采样的使用
2020/04/24 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
Skyscanner阿联酋:全球领先的旅游搜索平台
2017/11/25 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
Ejb技术面试题
2015/04/29 面试题
毕业自我鉴定范文
2013/11/06 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
法定代表人授权委托书
2014/04/04 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
房地产活动策划方案
2014/05/14 职场文书
2014年绿化工作总结
2014/12/09 职场文书
2019个人工作总结
2019/06/21 职场文书
goland 清除所有的默认设置操作
2021/04/28 Golang