在PHP中创建独特的投票/调查/问卷

6

我所指的独特的投票/调查是指,用户只能投票一次。我该如何做到这一点?追踪他们的IP地址?登录?除了登录之外,还有什么其他的选择吗?(登录是我的最后选择,因此除了登录,我还能做些什么?)


这个回答解决了你的问题吗?如何防止用户在网站上多次投票 - James
3个回答

8
为了限制每个人的投票次数,您需要追踪这个人。
现在有几种方法可以做到这一点,我将列出它们及其优缺点。您可以决定哪种方法最适合您。
  1. 登录:这将为您提供终极控制。但对于用户来说有点繁琐。而且这是您的最后选择。
  2. IP地址:如何处理使用Web代理的人?那些拨号连接和/或动态IP的人怎么办?
  3. cookie:这对于短期投票很好,因此您可以将cookie的过期时间设置为投票结束的时间。但是,潜在的缺点是用户(与luser相反)会知道如何删除cookie!
  4. OpenID:虽然这种方法与“登录”方法并没有太大不同,但这可以免去用户注册(注册真的是登录中最糟糕的部分)。
编辑:这种情况的问题在于您需要解决用户的身份问题。我认为 OpenID 做得非常好。
祝好,
jrh.

谢谢。我已经考虑了这些解决方案,你说得对,它们各有优缺点... 你还能想到其他的方法吗? - jingleboy99
我建议您选择openid方法,但它比其他系统更复杂实现。 - jrharshath
好的,谢谢。我一定会检查OpenID。投票给最佳答案.. :) - jingleboy99

2
您可以在用户的计算机上存储cookie。但请注意,用户可以轻松禁用cookie或修改cookie内容。没有100%可靠的方法来实现您想要的功能 - 用户始终可以创建新帐户或切换到另一台计算机等。
如果您想采用cookie方法,有三种可能性:
1. 您可以存储一些文本,说明此人已经投票。 2. 您可以存储引用其投票的唯一ID。 3. 您可以存储会话cookie并将其余数据存储在服务器上(可能更安全,因为他们无法编辑数据,只能编辑会话ID,并且这样做可能会使其无效)。

0

最安全的方式是使用登录系统。

但是如果您不想使用登录系统,我曾经添加过一个哈希值,其中包含用户的IP和浏览器,这将帮助我过滤掉比简单的IP更好的程度(因为不同人使用相同的浏览器时浏览器字符串可能会有所不同,由于版本、操作系统和已安装的扩展),但是如果他们切换浏览器,您仍然会遇到问题,这与cookie的问题相同。哈希值存储在数据库中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接