2012-01-17 56 views
0

我不是100%确定如何描述这一点,所以下面是我正在做的事情的快速解释:我有一个网站,人们可以向UP或DOWN投票给一个“冠军”。这些冠军从100健康开始。如果您要为特定的冠军投票,他们的健康状况现在为101. DOWN投票将为99.防止来自不同用户的多个同时投票

此网站现在已经运行了5个季节(有超过1200个玩家)。所以有很多投票立刻进行。现在一切正常。对于下个赛季,我正在使用jQuery/getJSON/ajax实现“实时”投票(因此每次投票时不需要刷新页面)。

我现在的这个工作非常棒(实际上我很震惊:P),除了一个小细节...如果一个“冠军”的生命值降到1,并且多于一个人同时点击DOWN VOTE ,服务器会多次启动它,使得冠军拥有-1或任何数量的健康状况。它还插入(在数据库的已删除表格中)每个与淘汰该冠军的人同时点击DOWN的人。

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

+0

你需要防止重复的投票或什么? – 2012-01-17 09:30:31

+0

你使用MyISAM或InnoDB引擎吗? – 2012-01-17 09:39:24

+0

我想你可以这么说,但是它并不是一个人的重复投票。这是从多个用户同时执行相同的操作导致它们全部被淘汰而不是仅仅一个用户记入账户。 – Nate 2012-01-17 09:42:21

回答

2

我看到你已经有一些基于这个职位的代码:link

你可以做的是:

  • 更改更新功能,先选择一个用户具有健康的量。然后只在实际大于0时更新它。如果它是< 1,那么您可以决定将它也设置为0,以防止发生与-1相关的事故。如果那是偶然发生的,那么你将它设置回来。但那个cha is很小。
  • 执行INSERT到已删除的表中时,请检查该记录是否已经存在。如果没有,然后插入它。作为附加检查,如果意外发生,可以删除重复项。这可以防止你让多个人消除同一个人(这听起来不可能)。
+0

谢谢你的回复!是的,最后一个问题很快就解决了:)从那以后,我添加了更多的代码,哈哈。我已经在做你的第一个建议,但不是INSERT的建议,我会尝试这个并回复给你(可能明天虽然) – Nate 2012-01-17 09:48:06

+0

谢谢你工作:) – Nate 2012-01-17 21:43:21

相关问题