我正在制作一个带有投票系统的网站(使用 PHP、JavaScript 和 MySQL),该系统允许人们匿名投票,但只能投票一次。
这意味着我的系统必须知道谁投票了(因为我必须检查用户是否已经投票),但我不想将用户名或用户的 IP 地址存储在数据库中(破坏匿名性) )。我不知道如何开始,我需要一些指导;我应该寻找什么?
最佳答案
你最糟糕的问题是如何确保你的用户只投票一次,但这不是问题的重点:你问的是如何确保匿名
这相当简单:将用于单次投票的任何内容视为密码,然后对其进行哈希处理。因此,为了论证起见,假设您正在使用 IP。我知道这样做的问题,但我们假设这是您的选择。
- 用户投票
- 您对 IP 进行哈希处理并保存。
- 您甚至可以将其保存在不同的位置。甚至不需要保存哪个哈希投票给了哪个选项。
- 用户再次投票 -> IP 哈希已在数据库中准备就绪。
- 为了不泄露某人已经投票的信息,请不要回复“您已经投票”,但不要保存投票。这样就无法知道这台机器是否进行了投票
请注意,这是关于匿名,而不是关于如何确保单一投票。
关于php - 如何支持网站匿名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22015945/