我只是使用评论框让用户输入评论,但现在用户倾向于发布尽可能多的评论,我只希望用户只发布一次,所以我觉得在我们插入之前我们将检查数据库中的注释,以便再次停止插入(不要将相同的注释放在两次)
$query = "INSERT INTO comments(user_id,post_id,comments)"
."VALUES('".$user_id."','" .$post_id. "','" .$comment_text. "')";
$result = mysql_query($query) or die('Error'.mysql_error());
答案 0 :(得分:0)
首先,我希望您正在清理用户的意见,如果没有,请做。
我认为解决此问题的最佳方法是检查以前的评论是否与用户当前插入的评论相同,比如说
$query = "SELECT comment_text FROM comments WHERE user_id=$user_id ORDER BY post_id DESC LIMIT 1;"
然后检查评论文本是否相同
if($comment_text != $previous_text) {
//insert new comment
}
另一种方法是阻止用户在一定时间内发布评论,类似于此网站。 30秒通常是平均值。然后你会根据时间戳进行检查。
答案 1 :(得分:0)
问题可能是由于提交评论的响应缓慢(ajax)。因此用户可能多次按下提交按钮。因此,最好的办法是在提交处理程序中禁用该按钮,因此不会再发出相同注释的提交。
此外,如果用户有意提交相同的数据,您可能需要检查用户的IP地址,如果评论是在短时间内从同一IP传入的,请将其视为垃圾邮件并限制它。
答案 2 :(得分:0)
为避免重复,建议您在点击后使用客户端javascript disable the submit button。
你的SQL在这里并不重要,但要确保你像ohmusama提到的那样消毒它。