如何防止游戏投票系统,人们每天可以投票一次?

时间:2011-04-11 17:55:15

标签: php algorithm lamp ranking voting-system

我已经实现了在线视频投票系统,其中访问者只能在任何一天投票一次。我使用他们的电子邮件地址和时间戳的组合来确保每一次投票在当天都是唯一的。

正如您可能猜到的,这导致人们通过在mailinator.com等处注册一次性电子邮件地址来游戏系统,所以我想知道是否有人尝试实施允许同一人多次投票的任何其他投票算法。此外,此设置意味着如果视频#1与视频#2相关联的人数更多,则视频#1已经处于不公平的优势。

我正在考虑一个排名系统,但我不完全确定如何阻止任何人使用假电子邮件地址游戏系统。我试图解决的问题是这样的:

  

给出3个视频,A,B和X.A中有5个人,B有2个,X有4个   假设X是三者中最好的视频,并且人们每天都可以投票,是否有一个投票系统可以帮助“B”升到顶峰?

就像我说的那样,我提出的排名系统,假设如果#2的数量超过#1,那么可以安全地假设 应该是赢家,但这似乎是不完整的。 / p>

有没有人之前处理过这样的事情?请记住,这些是相当低的音量结果(我们平均约500票/ 7天),所以2人真的可以有所作为。

这是在共享托管环境中的LAMP(PHP)堆栈上,如果有帮助的话。

另外,如果你想知道为什么我们允许同一个人进行多次投票,那是因为更高的人意识到这有助于增加网站的流量,他们真的很喜欢看到图表上升(尽管随后的事实命中很无意义。)

提前致谢,如果您需要任何其他信息,请告知我们。

3 个答案:

答案 0 :(得分:2)

你实际上是在询问两件事:

首先,你怎么能阻止人们游戏系统?这非常棘手。您可以通过要求注册,最低声誉(如SO)或其他限制来提高投票标准,但最终您希望做的就是减少作弊,而不是消除欺诈。考虑到人们多次成功注册进行实体政治选举,然后评估您可以消除网站上所有作弊的可能性。

其次,您如何对可能具有不同受欢迎程度且已经出现不同时间的不同项目进行公平的质量排名? Randall Munroe描述了一个非常好的解决方案here。那篇文章链接到实际的算法,这个算法非常简单。

答案 1 :(得分:1)

没有登录系统,您的问题无法解决。人们将继续打败你的系统,除非你为他们提供一个真正的身份验证系统,需要几个步骤来创建一个帐户。顺便说一下,OpenID非常适合。

不要使用重型饼干(特别是不要使用Evercookie)。这违反了用户的隐私。我永远不会想在我的电脑上使用僵尸饼干。

如果他们继续游戏你,除了手动标记垃圾账户和删除相应的投票外,你无能为力。

或者您可以使用基于声誉的系统,只需要最少的投票代表(如StackOverflow)。

如果您需要快速安全的工作解决方案,请查看OpenID

答案 2 :(得分:1)

网上有这个Q& A平台 - 不知道你是否听说过 - 它被称为stackoverflow.com; - )

也许你可以在这个网站采用评级系统?我发现仅允许具有给定评级的用户以多种方式操纵系统非常聪明。您可以按帐户年龄选择用户(例如,仅在注册后2周内进行投票)或通过某种声誉系统进行选择。