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多个版本的分析解释
Jul 21 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
解决phpcms更换javascript的幻灯片代码调用图片问题
Dec 26 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 PHP
php layui实现前端多图上传实例
Jul 30 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
Dec 04 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 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
PHP数据库开发知多少
2006/10/09 PHP
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
PHP 动态生成静态HTML页面示例代码
2014/01/15 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
asp.net中oracle 存储过程(图文)
2015/08/12 Javascript
javascript中offset、client、scroll的属性总结
2015/08/13 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
深入浅出 Vue 系列 -- 数据劫持实现原理
2019/04/23 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
jquery实现Ajax请求的几种常见方式总结
2019/05/28 jQuery
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
python MySQLdb Windows下安装教程及问题解决方法
2015/05/09 Python
Python 常用string函数详解
2016/05/30 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
用Python解数独的方法示例
2019/10/24 Python
Python基于Hypothesis测试库生成测试数据
2020/04/29 Python
入学申请自荐信范文
2014/02/26 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android