我有一个真正奇怪的问题。好吧,在我的网站上,我有一个反馈和评论系统,两者都使用 cookie 来防止人们发送大量评论(大量垃圾邮件),阻止写评论或反馈帖子,例如 30 秒。如果他们禁用 cookie,他们将无法发表评论或反馈。我使用带有 JQuery 脚本的系统,使用 PHP 中的一个进程来不刷新页面。
第一个问题 - 出于某种原因,在本地主机(托管在我家)上它工作正常,阻止了人们。但是在主机上,如果我上传脚本(例如,如果我想做更新),它会停止工作,我可以随意评论,它不会阻止。但它只是在我的电脑上(正如我测试过的,在我兄弟的笔记本上和我的工作正常)我还在 IE、Firefox 和 Chrome 上进行了测试。但几天后(随机,1-4)它开始正常工作。但是,如果我更新脚本(甚至不更改那个脚本),就会支持这个问题。
第二个问题 - 在投票(反馈)和评论系统中,如果“阻止系统”工作正常,它将阻止用户 30 秒。但是,当我提交评论时,第一秒点击非常快,它会提交两次。就像,做 2/3(有时 4)次相同的评论。但是如果我尝试在 30 秒之前再次发表评论,它将被阻止。我如何防止人们重复提交?
这是给您的一些代码,它应该会有所帮助。
评论.php
if (isset($_COOKIE["AbleCookie"])) //prevent disabled cookies
{
if (!isset($_COOKIE["time"])) //verify if the cookie time (to block comment) has been set
{
if (strlen($Comentario) != 0)
{
if (strlen($Comentario <= 500))
{
ob_start(); //need this?
setcookie("time", "anyvalue", time()+$Segundos);
ob_end_flush();
if (isset($Usuario))
{
$acharUsuario = "select query";
$resultado = mysql_query($acharUsuario, $conexao) or die (mysql_error());
$ExisteUsuario = mysql_num_rows($resultado);
if ($ExisteUsuario != 0)
{
$UsuarioID = mysql_result($resultado, 0, 'id_usuario');
$InserirComentario = "insert query";
mysql_query($InserirComentario, $conexao) or die (mysql_error());
$Mensagem = "Correct";
}
}
else
{
$InserirComentario = "insert query";
mysql_query($InserirComentario, $conexao) or die (mysql_error());
$Mensagem = "Correct";
}
}
else
$Mensagem = "<h3>Your comment must has less than 500 characters.</h3>";
}
else
$Mensagem = "<h3>To comment something, you have to write something, right?</h3>";
}
else
$Mensagem = "<h3>You just can do another comment after $Segundos seconds!</h3>";
}
else
$Mensagem = "Something went wrong! Please, take a look on our <a href='../faq'><b>FAQ</b></a>!";
echo $Mensagem;
$Mensagem = "";
不刷新.js
function InserirComentario(){
var uname = $('#PostComentario').val();
var postid = $('#CommentPostID').val();
var dataString = 'post_comentario='+ uname + '&comment_postid='+ postid;
$.ajax({
type: "POST",
url: "sucess/comments.php",
data: dataString,
cache: false,
success: function(result){
if (result=='Correct')
{
document.getElementById("PostComentario").value = "";
}
else
{
$("#ComentariosFullPost").html(result);}
},
error: function(xhr, ajaxOptions, thrownError){
alert("Error Status: " + xhr.status + " Thrown Errors: "+thrownError);
}
});}
先谢谢了。