我为我的网站创建了一个评论系统。我遇到的问题是,每当网页刷新或重新加载时,旧评论都会重复。如何停止此操作并只显示原始评论?我在下面添加了整个代码:
<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>
我们将感谢您的帮助。
在表单的隐藏字段中发送一个唯一的值(例如用php的uniqid()
创建)。每次将表单发送到浏览器时,都要更改值。如果你从同一个浏览器中两次获得相同的值,你就知道这是一个双重帖子。
您还可以计算发布信息的哈希,并将其与数据库中已有信息的哈希进行比较,为了提高速度,您可以将每条评论的哈希存储在数据库中。
您还可以在数据库级别对此进行限制,例如,使用replace而不是insert(对于mySQL)。