php / mysql注释在页面重新加载时自动复制

时间:2015-04-03 05:33:19

标签: commenting

我为自己的网站创建了评论系统。我遇到的问题是,旧的评论会在刷新或重新加载网页时自行复制。 我怎么能阻止这个并且只显示原始评论? 我在下面添加了整个代码:

<pre>
require 'data/connect.php';


 if(isset($_POST['name'])&& isset($_POST['comment'])){
     $name = trim($_POST['name']);
     $comment = trim($_POST['comment']);

     if(!empty($name) && !empty($comment)){
         $insert = $connect->query("INSERT INTO 
         comments(name,comment)VALUES('$name','$comment')");
         if($insert){
             echo "Success";
         }else{
             echo "Sorry";
         }
     }
 }
 ?>
 </pre>

此处

<pre>
<?php 
    if(isset($_POST['name'])&& isset($_POST['comment'])){
        $name = trim($_POST['name']);
        $comment = trim($_POST['comment']);
        if(!empty($name) && !empty($comment)){
             $query = $connect->query("SELECT name,comment FROM comments WHERE name='$name' AND comment='$comment'");
            while($row = $query->fetch_object()){
                echo "<b>",$row->name,"</b><br/>",$row->comment;
            } 
        }
    }
   ?>
</pre>

我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

在表单的隐藏字段中发送一个唯一值(例如,使用php的uniqid()创建)。每次将表单发送到浏览器时,请更改该值。如果您从同一个浏览器获得两次相同的值,则表示它是双重帖子。

您还可以计算已发布信息的哈希值,并将其与数据库中已有内容的哈希进行比较,为了提高速度,您可以为数据库中的每条注释存储哈希值。

您也可以在数据库级别对此进行限制,例如使用replace而不是insert(对于mySQL)。