防止双重投票

时间:2012-01-22 16:23:43

标签: php double vote voting-system

我正在创建一个网络应用程序,用户可以通过点击竖起或竖起大拇指对某些候选人进行投票,这些用户将不会在该网站上拥有任何帐户。

最好的技术是什么?是否有必要使用验证码来加强对垃圾邮件的保护?

预计投票数量将达到数百万,只要我获得95%的准确率,主题就不是很关键。谢谢。

4 个答案:

答案 0 :(得分:5)

您可以将这两种方法结合起来:

  • 添加Cookie以防止来自同一台计算机的多次投票
  • 记录IP地址并防止从同一地址投票超过一定次数(例如,同一小时的5次)。

这将使多人可以从同一网络投票,但仍可防止过度作弊。

您还可能通过添加一些隐藏的表单字段以及必须包含在投票中的令牌来构建投票机器人,并且/或者使用Ajax进行投票。我知道建立一个机器人相对容易,但大多数骗子并不那么聪明。

答案 1 :(得分:1)

Cookie 会话ID 会有所帮助,但两者都可能在浏览器关闭时丢失(如果用户已将其删除)。不过,他们会给你一定程度的准确性(例如,懒惰的选民不会费心关闭并重新打开他们的浏览器)。

使用 IP地址也可以,但正如@Michael Dillon所说,同一IP地址(同一路由器)的用户将无法投票。

答案 2 :(得分:1)

您有几个选项,可以使用其中的部分或全部。

您可以录制IP,然后检查IP,但这并不表示特定的人只是一台计算机,有时不仅仅是一台计算机。

您也可以将cookie写入用户的浏览器,但用户可以使用其他浏览器,机器等。

在用户的会话中,您可以创建一个会话变量,但如果您期望非常高的流量,这可能不是最佳选择,也只能阻止在同一会话中重新投票。

如果您正在考虑使用验证码,您也可以要求用户提供电子邮件地址,然后确保每个电子邮件地址至少有一个投票。但是,即使这样,您也无法保证有效的电子邮件地址。

答案 3 :(得分:1)

您可以在他们想投票时询问他们的电话号码,并向他们发送一次密码,并将其用作验证。 我的一些人也从其他数字中投票,但我认为这是最准确的方法。