我为自己的网站创建了评论系统。我遇到的问题是,旧的评论会在刷新或重新加载网页时自行复制。 我怎么能阻止这个并且只显示原始评论? 我在下面添加了整个代码:
<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 :(得分:0)
在表单的隐藏字段中发送一个唯一值(例如,使用php的uniqid()
创建)。每次将表单发送到浏览器时,请更改该值。如果您从同一个浏览器获得两次相同的值,则表示它是双重帖子。
您还可以计算已发布信息的哈希值,并将其与数据库中已有内容的哈希进行比较,为了提高速度,您可以为数据库中的每条注释存储哈希值。
您也可以在数据库级别对此进行限制,例如使用replace而不是insert(对于mySQL)。