防止投票系统中的复兴

时间:2011-11-10 19:12:57

标签: php

我已经设置了一个轮询系统,当您投票时,它会使用以下方式存储您的外部IP:

$_SERVER['REMOTE_ADDR'];

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

但是有些计算机具有相同的外部IP。这些可以像我学校一样数百个。如果我在一台电脑上投票,没有人可以再次在我的学校投票。

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

感谢。

2 个答案:

答案 0 :(得分:4)

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

如果你不太担心保证结果,你可以放弃一个cookie。否则,正如评论者所建议的那样,登录系统是一种很好的标准方法。

答案 1 :(得分:2)

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