私は本当に奇妙な問題を抱えています。さて、私のウェブサイトにはフィードバックとコメントのシステムがあります。どちらも Cookie を使用して、人々が大量のコメント (大量のスパム) を送信するのを防ぎ、コメントの書き込みや投稿へのフィードバックを 30 秒間ブロックします。Cookie を無効にすると、コメントやフィードバックができなくなります。ページを更新しないように、PHP のプロセスを使用して JQuery スクリプトでシステムを使用しています。
最初の問題 - 何らかの理由で、(私の家でホストされている) ローカルホストで正常に動作し、人々をブロックします。しかし、ホストでは、スクリプトをアップロードすると (たとえば、更新を行いたい場合)、作業が停止し、好きなだけコメントでき、ブロックされません。しかし、それは私のコンピューター上だけです(私がテストしたように、兄弟のノートブックと私の仕事では問題なく動作します)IE、Firefox、およびChromeでもテストしました。しかし、数日後 (ランダム、1 ~ 4 日) に正常に動作し始めます。しかし、スクリプトを更新すると (そのスクリプトを変更しなくても)、問題が解決されます。
2 番目の問題 - 投票 (フィードバック) およびコメント システムでは、「ブロック システム」が正常に機能すると、ユーザーが 30 秒間ブロックされます。しかし、コメントを送信すると、最初の 1 秒で非常に速くクリックすると、2 回送信されます。同様に、同じコメントを 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 = "";
not-refresh.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);
}
});}
ありがとうございます。