我想建立一个不需要人们登录的投票系统,但他们可以按照自己的意愿投票。
如何阻止人们在投票时发送垃圾邮件(发送添加投票的请求)?我知道使用客户端站点脚本可以轻松地阻止它(来自适当的用户),但是服务器端(PHP)呢。我不希望人们拥有该网址并不断地点击它来增加数量。
干杯
答案 0 :(得分:4)
实施reCAPTCHA - 它非常容易实施(大约需要10分钟),是一种很好的反垃圾邮件措施,可以实现更大的目的(数字化书籍)。
如果您真的想要使用Cookie,请查看evercookies。他们是超级侵入性的,非常不道德,但是,嘿,这是你的网站:)
答案 1 :(得分:2)
您必须记录他们的IP和/或设置cookie。 cookie的问题是客户端可以擦除它们,而IP跟踪的问题是,如果NAT防火墙处于混合状态,它可以阻止多个用户,但它在大多数情况下都会很好。
答案 2 :(得分:2)
您可以添加一个vote_tracking表:
vote_tracking
id
poll_id
session_id
当用户在特定投票中投票时,您可以使用其会话ID更新该行。
然后,您需要实现一些代码,以确保您不会继续发出查询以确定用户是否已在投票中投票。如果你有一个'活动'轮询,你可以进行一次查找,然后注册一个会话var,表明他们已经投票,所以无论轮询多少次呈现,你都不会继续点击数据库。显然这只会在当前session_id匹配时起作用,当它不同时,你必须发出第一个查询然后重置会话变量。
我建议使用一种收割机制,这样你的桌子就不会有一百万行了。如果您创建新的“活动”投票,请截断vote_tracking表,或通过重命名表来存档它。
此外,IP跟踪的问题在于,在第一个人投票之后,您将支持代理人背后的用户,其他人都无法投票。