2011-11-10 58 views
1

防止revotes我已经建立了投票系统,就是当你投它使用存储您的外部IP:在投票系统

$_SERVER['REMOTE_ADDR']; 

它存储这在一个名为IPLIST数据库。 它还设置了一个cookie。 在轮询页面中,如果cookie被设置或者mysql_num_rows的数量大于1,它将禁用收音机框。 这是为了防止重新投票。

但是有些电脑有相同的外部IP地址。这些可以在我的学校一次成百上千。如果我在一台电脑上投票,没有人可以再次在我的学校投票。

有什么办法可以解决这个问题。例如,要查找网络中的计算机数量,请更改mysql_num_rows。或者在每台计算机上查找唯一的常量变量以存储在数据库中。

谢谢。

+3

如果你真的担心匿名用户在玩你的投票系统,请让他们登录并将投票结果与用户联系起来 –

+0

有些东西可以让你找出网络中有多少台计算机不属于你将是一个安全问题。 – NullUserException

+0

我不在乎用户的匿名性 –

回答

4

根本没有办法事先知道给定IP地址后面有多少设备......实际上,事情比您对AOL用户所想的要糟糕得多(可能有数万台计算机在给定的背后IP地址(AOL代理)。

如果你不太担心保护的结果,你可以放置一个Cookie。否则,作为评论者的一个暗示,一个登录系统是一个很好的,标准的方法。

2

没有100%的方法可以确保一个人进行多次投票。你可以做的最好的事情就是让事情变得困难。用电子邮件地址绑定,并使用类似catcha以确保非自动投票。可以发送需要回复以确认投票的电子邮件。

+0

自2008年以来,Captcha已被破解。僵尸程序作家可以使用库来自动破解Captcha。 –

+0

我知道 - 只是我头顶的东西 - 情绪只是让它变得困难。我确实说过* *类似于* –

+0

@Erik,这是真的...... http://en.wikipedia.org/wiki/Tesseract_(software)存在并且与许多训练数据非常吻合。然而,如果这次调查中的“获胜者”没有获得奖励,并且验证码不是已经有必要文件生成的,那么我认为captach是一个非常好的解决方案。 – sberry