php - 防止不同用户同时进行多个投票

标签 php jquery mysql simultaneous

我不是 100% 确定如何描述这一点,所以这里是我正在做的事情的快速解释:我有一个网站,人们可以在其中对“冠军”投票赞成或反对。这些冠军的生命值一开始为 100。如果您对某个特定英雄投赞成票,那么他们的生命值现在为 101。投反对票则为 99。

该网站现已上线并运行 5 个赛季(有超过 1200 名成员(member)在玩)。所以有很多投票同时进行。现在一切正常。对于下一季,我将使用 jQuery/getJSON/ajax 实现“实时”投票(因此页面不需要在每次投票时刷新)。

我现在的工作效果非常棒(实际上我很震惊:P),除了一个小细节...如果“冠军”的生命值降至 1,并且不止一个人同时点击“向下投票”,服务器多次触发它,使冠军拥有-1或任何数量的生命值。它还将与淘汰该冠军的人同时单击“向下”的每个人插入(到数据库的淘汰表中)。

真的不知道在这里做什么...但我希望我解释得足够好。如果你们需要任何代码,例如将信息插入数据库的 php 文件,甚至 jQuery 部分,请告诉我!任何帮助将不胜感激!

最佳答案

我看到您已经有一些基于这篇文章的代码:link .

你能做的是:

  • 将 UPDATE 函数更改为首先选择用户的生命值。然后仅在实际 > 0 时更新它。如果它 < 1,那么您可以决定将其也设置为 0,以防止 -1 发​​生意外。如果这仍然是偶然发生的,那么你就把它放回去。但这个机会非常小。
  • 在删除的表中执行插入操作时,请检查该记录是否尚未存在于其中。如果没有,则将其插入。作为额外检查,如果意外发生,您可以删除重复项。这可以防止多人消灭同一个人(这听起来不可能)。

关于php - 防止不同用户同时进行多个投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8892229/

相关文章:

php - 为什么这不会解码为 html 实体?

php - HTML 表单中的西类牙字符在 MySQL 数据库中显示错误

php - 将 MySQL 输出写入变量时出现 "Array to string conversion"

javascript - 如何在链接中添加目标空白

php - 为一个查询使用准备好的 mysql 语句是否值得?

php - 使用数组查询

php - 使用 Facebook PHP-SDK 3.x 通过 Codeigniter 2.1.0 注册/登录用户

javascript - 如何将 "inject"变量转入匿名函数

MYSQL:联合运算符添加 'total' 行

javascript - 使用jquery清除文本输入