Home  >  Article  >  Backend Development  >  Detailed explanation of PHP+Mysql no-refresh Q&A comment system

Detailed explanation of PHP+Mysql no-refresh Q&A comment system

墨辰丷
墨辰丷Original
2018-05-29 13:37:431892browse

I wrote a comment system source code to share with everyone, including expressions and comment mechanism. The code is simple and easy to understand. Friends who need it can refer to

I wrote a comment system source code to share with everyone. Including expressions and comment mechanism. The username is random

Comment on a certain article

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[&#39;content&#39;])); 
    $data[&#39;tid&#39;] = I("post.id", 0, &#39;int&#39;); //文章id 
    if (strlen(preg_replace(&#39;/\[ [^\)]+? \]/x&#39;, &#39;&#39;, $content)) < 10) { 
      echo json_encode(array("code" => "short than 10", "error" => "评论的内容不能少于10个字符。")); 
      exit; 
    } 
    if (C("DB_PWD") != &#39;&#39;) { 
      if (time() - session("comment_time") < 60 && session("comment_time") > 0) {//2分钟以后发布 
        echo json_encode(array("code" => "fast", "error" => "您提交评论的速度太快了,请稍后再发表评论。")); 
        exit; 
      } 
    } 
    $data[&#39;pid&#39;] = I("post.pid", 0, &#39;int&#39;); 
    $data[&#39;pid_sub&#39;] = I("post.pid_sub", 0, &#39;int&#39;); 
    $lyid = $data[&#39;pid_sub&#39;] > 0 ? $data[&#39;pid_sub&#39;] : $data[&#39;pid&#39;]; 
    if ($lyid > 0) { 
      $lyinfo = M("comment")->field("uid")->where("id=&#39;" . $lyid . "&#39;")->find(); 
      $data[&#39;touid&#39;] = $lyinfo[&#39;uid&#39;]; 
    } else { 
      $data[&#39;touid&#39;] = 2; 
    } 
    $data[&#39;addtime&#39;] = time(); 
    $emots = getTableFile("emot"); 
    foreach ($emots as $v) { 
      $content = str_replace("[" . $v[&#39;name&#39;] . "]", "<img alt=&#39;" . $v[&#39;name&#39;] . "&#39; src=&#39;" . __APP__ . "/Public/emot/" . ($v[&#39;id&#39;] - 1) . ".gif&#39;>", $content); 
    } 
    $data[&#39;content&#39;] = addslashes($content); 
    $info = M("comment")->field("id")->where("content=&#39;" . $data[&#39;content&#39;] . "&#39;")->find(); 
    if ($info[&#39;id&#39;]) { 
      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[&#39;uid&#39;] . " AND addtime between " . $day_start . " AND " . $day_end . "")->count(); 
      if ($comment_num_day <= 5) { //少于5条每天,则添加积分 
//          addPoints("comment", $points_comment, $data[&#39;uid&#39;], "评论获得" . $points_comment . "积分", 5, 1); 
      } 
//        addMessage(&#39;comment&#39;, $data[&#39;tid&#39;], $data[&#39;pid&#39;], $data[&#39;mtype&#39;], $data[&#39;touid&#39;], $content); 
    } 
    session("comment_time", time()); 
    echo json_encode(array("code" => 200, "comment" => $content, "points" => $points_comment)); 
  } 
}

Get based on paging parameters Corresponding comment list

function comments() { 
  $id = I("get.id", 0, &#39;int&#39;); 
  $mtype = I("get.mtype", 1, &#39;int&#39;); 
  $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][&#39;sub&#39;] = M("comment")->field("id,uid,content,pid_sub")->where("tid = " . $id . " AND pid = " . $v[&#39;id&#39;] . "")->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(); 
}

Switch comment pagination

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("<p style=&#39;padding:20px 0;text-align:center;&#39;><img src=&#39;" + site_url + "Public/images/loading.gif&#39;></p>"); 
    $.get(getUrl("Box/comments"), { 
      page: page, 
      id: id, 
      totalnum: totalnum, 
      mtype: mtype 
    }, 
    function(data) { 
      $("#comment_list").html(data) 
    }) 
  }) 
}

The comment form and emoticon form have been placed in the compressed package

CREATE TABLE IF NOT EXISTS `sucai_comment` ( 
 `id` int(11) NOT NULL AUTO_INCREMENT, 
 `uid` int(11) NOT NULL, 
 `touid` int(11) DEFAULT &#39;0&#39;, 
 `pid_sub` int(11) DEFAULT &#39;0&#39;, 
 `tid` int(11) NOT NULL, 
 `pid` int(11) DEFAULT &#39;0&#39;, 
 `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 ;

The above is the entire content of this article, I hope it will be helpful to everyone Learning helps.


Related recommendations:

php implementationCommentsDetailed explanation of reply and delete function examples

php unlimited levelCommentsDetailed explanation of nesting implementation steps

php unlimited levelCommentsNesting implementation steps Detailed explanation

The above is the detailed content of Detailed explanation of PHP+Mysql no-refresh Q&A comment system. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn