2015-04-03 62 views
0

我为我的网站创建了评论系统。我遇到的问题是,旧的评论在网页刷新或重新加载时会自我复制。 我该如何解决这个问题,只显示原始评论? 我已经在这里添加了整个代码如下:这里php/mysql评论在网页上自动复制重新加载

<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> 

您的帮助将不胜感激。

回答

0

发送一个唯一的值(例如用php的uniqid()创建)在窗体的隐藏字段中。每次将表单发送到浏览器时,都要更改该值。如果你从同一个浏览器获得两次相同的值,那么你知道这是一个双重职位。

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

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

+0

好吧,我已经更新了我的拼写并添加了一些遗漏的单词。我写这篇文章的时候一定是睡着了。这是一个有效的答案,并且我为了相同的目的成功地使用了该技术(带有双重帖子的评论系统)。如果你打算投票,至少给出一个理由。 – Arunas 2015-04-17 05:09:32