我正在开发一个小型网络应用程序,它需要一个使用php进行大学活动的在线投票系统。我正在获取IP地址并将其存储在数据库中以防止来自同一用户的重复投票。但后来我记得我的大学使用代理服务器,所以获取IP地址是没用的。 我尝试使用javascript访问和存储客户端的Mac地址..我尝试了一些我在互联网上找到的例子..但没有一个工作。 你们能告诉我一个替代方法,我怎样才能得到我想要的结果?
任何形式的帮助都会非常感激。
此致 Aayush Shrestha 尼泊尔
答案 0 :(得分:2)
让他们输入他们的电子邮件地址并发送一个链接到他们允许他们投票的电子邮件。该链接应包含其电子邮件的一些哈希值,您必须检查它们是否已经投票。
我意识到学生可以输入多个电子邮件地址并多次投票,但学生确实拥有多少封电子邮件?他们花多少时间做这样的事情?
我猜你没有通过你的大学访问任何类型的身份验证系统,所以这可能是最好的方法。
修改强>
另一个想法是使用Facebook身份验证(请参阅:http://developers.facebook.com/docs/authentication/)。缺点是你必须假设所有选民都有Facebook账号。
答案 1 :(得分:0)
这样做的唯一100%密不透风的方法是让用户创建需要一些个人独特信息的帐户,以防止用户创建多个帐户。
没有登录系统的最接近的是Evercookie库,它在用户浏览器的十几个不同位置存储UUID。很难清除它们(甚至在浏览器中使用隐私模式),所以如果你在投票时给用户一个Evercookie,你可能会发现之前投票的人。
请注意,这会停止在机器级别而不是用户级别上重复投票(一台机器可能会有多个用户,并且用户可能拥有多台机器,这可能会使重复选民或阻止合格选民)。
答案 2 :(得分:0)
首先让用户注册一个电子邮件地址,以便他们可以使用随后与该地址相关联的投票系统。
一旦您拥有一个电子邮件地址(通过发送到该电子邮件的激活链接进行验证),您就可以收集用户投票相关的输入。
除非您强制执行用户证书等,否则实际上没有有效的,与平台无关的方法来防止重复投票。