我有一个upvote按钮,用户可以按该按钮,并且将会注册一个投票。再次单击此按钮,将取消投票。

因此,每次按此按钮都将执行数据库写操作。如果在此按钮上连续使用自动点击器,则会发生连续的数据库调用。我想防止这种情况。
我能做什么?

PS。单击upvote按钮时,我正在向后端(运行Django)发送ajax查询。

最佳答案

您确实想在服务器上检查此内容,因此,如果有人禁用了javascript都没关系。

如果您使用的是PHP,则一个选项是设置投票之间的时间限制。例如,每分钟只允许投票一次。

因此,在每次投票中,将投票时间存储在 session 变量中,如果在时间限制内,则忽略后续投票:

//on vote
$now=date('U');
if(!isset($_SESSION['lastvote']) || $now - $_SESSION['lastvote']<LIMIT){
    $_SESSION['lastvote']=$now;
    // do database call

}else{
    //throw error
}

07-24 18:00
查看更多