防止来自不同用户的多个同时投票

时间:2012-01-17 09:29:17

标签: php jquery mysql simultaneous

我不是100%肯定如何描述这一点,所以这里有一个快速解释我在做什么:我有一个网站,人们可以向上或向下投票给“冠军”。这些冠军从100健康开始。如果你要投票给一个特定的冠军,他们的健康状况现在是101. DOWN投票将是99。

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

我现在对此工作很惊人(实际上我很震惊:P)除了一个小细节......如果一个“冠军”降到1个生命值,并且同时有多个人点击DOWN VOTE,服务器多次触发它使得冠军拥有-1或任何健康状态。它还插入(在数据库的淘汰表中)每个与消灭该冠军的人同时点击DOWN的人。

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

1 个答案:

答案 0 :(得分:2)

我发现你已经有一些基于这篇文章的代码:link

你能做的是:

  • 将UPDATE函数更改为首先选择用户拥有的健康状况。然后只在它实际上是>时才更新它。如果是< 1然后你可以决定将它也设置为0,以防止事故-1。如果这种情况仍然偶然发生,那么你将它重新设置。但那个小板很小。
  • 在删除的表中执行INSERT时,请检查该记录是否已存在。如果没有,那么插入它。作为额外的检查,你可以删除重复,如果它是偶然发生的。这可以防止你让多个人消灭同一个人(听起来不可能)。