Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 实施无需登记的投票制度_Php_Database Design_Cookies_Project Planning_Voting System - Fatal编程技术网

Php 实施无需登记的投票制度

Php 实施无需登记的投票制度,php,database-design,cookies,project-planning,voting-system,Php,Database Design,Cookies,Project Planning,Voting System,我想在我的网站上实现一个投票系统,而不必强迫他们创建一个帐户。他们最终将投票支持/否决具有唯一ID的内容 我知道我可以用IP/ID在表中存储条目,但是如果有多个用户来自同一IP呢 是否有一种方法可以唯一地识别访客,而不必与他们的外部ip绑定 如果创建了GUID,将其存储在该计算机上的cookie中,以后是否可以在具有相同IP的同一台计算机上检索该GUID?不同的IP 如果您对这些问题有任何想法,或者对更好的方法有任何见解,我们将不胜感激。原则上,您不可能使用cookie来区分从未访问过的访问

我想在我的网站上实现一个投票系统,而不必强迫他们创建一个帐户。他们最终将投票支持/否决具有唯一ID的内容

  • 我知道我可以用IP/ID在表中存储条目,但是如果有多个用户来自同一IP呢
  • 是否有一种方法可以唯一地识别访客,而不必与他们的外部ip绑定
  • 如果创建了GUID,将其存储在该计算机上的cookie中,以后是否可以在具有相同IP的同一台计算机上检索该GUID?不同的IP

如果您对这些问题有任何想法,或者对更好的方法有任何见解,我们将不胜感激。

原则上,您不可能使用cookie来区分从未访问过的访问者和访问过但删除了cookie的访问者。因此,任何基于cookie的解决方案都容易受到琐碎的投票欺诈

考虑一下本着这样一种精神来接受这个现实,他在20世纪90年代中期设置back时,在“您的选票已被统计”页面上提供了一个按钮,标签为“回去再投票!”


事实上,投票赞成(或反对)StackOverflow

您可以允许他们使用登录,这将允许他们使用现有帐户进行投票,而不必创建新帐户

Google、Yahoo和其他公司提供的服务允许您对用户进行身份验证


如果你不以某种方式对用户进行身份验证,投票系统就会被滥用。

是的,你可以使用cookie并将过期时间设置到很遥远的将来;然而,没有什么可以阻止任何人清除缓存并再次投票


你最好的选择是使用cookie,并且在15分钟内不允许来自同一IP的投票。。。没有注册,这是你能做的最好的事情。

你可以根据不仅仅是他们的IP来识别用户。例如,您可以包括IP+和整个请求头信息(例如浏览器、版本号、功能)并对其进行散列。这或多或少会唯一地标识您的用户(不幸的是,不是100%)

IP+用户代理比IP更独特;不确定它是否适合你的目的。如果您向他们发送一个cookie,只要cookie保持不变,该计算机(如果他们使用相同的浏览器)就会返回cookie,而不考虑IP,但请注意,用户可以随时清除cookie


如果你担心使用这个系统来防止选举欺诈,我不相信你能绕过让他们拥有一个帐户。

另一个选择是使用会话。它允许您将会话id与IP一起存储。这将允许您从不同的会话获取多个IP。唯一的缺陷就是浏览器的切换。添加一块饼干使其成为三人组可以帮助消除洪水


我在过去只使用IP地址完成了这项工作,它似乎在小范围内工作

我现在也在想同样的问题。我可能采取的办法如下:

  • (A) 你可以接受那些在你的网站上(使用会话)的人至少15分钟的投票(这可能是用户在博客/网站上阅读文章的大致时间)。当他们投票时,计时器将为下一次投票重置。因此,这样,用户删除cookies就没有用了

  • (B) 您可以接受未注册人员的投票,并获取他们的电子邮件地址并向他们发送一个指向投票的验证链接。当他们点击邮箱中的验证链接时,你就可以实际计算选票了。这就像每个电子邮件地址投票一样

  • (C) (A)和(B)的组合。通过这种方式,您可以确保每15分钟只向单个用户发送一次验证链接,这不会太多:)


你可以尝试或使用类似的解决方案。

我知道这是一个古老的解决方案,但我刚刚来到这里,有了一个想法

像这样的怎么样? 还有一件事我们可以扔进去

(如果它离线:这是一个由普通材料加上 +浏览器插件详细信息 +时区 +屏幕大小和颜色深度 +系统字体 +超级球
)

那么,怎样才能阻止某人在某个帖子上投上/下50次或100次票?我相信这正是OP的本意:我如何才能防止同一个人多次投上/下票。是的-问题背后的想法是防止滥用,但设计一个不需要注册的系统它会被滥用,当然。一个人可以拥有的OpenId帐户数量不受限制。事实上,自己成为一个OpenId提供商非常简单,只需很少的努力就可以生成无限多的OpenId帐户。你不必允许所有OpenId提供商的帐户。我想我会实现类似的功能,或者每天对唯一的内容进行最多投票。感谢您的输入,有许多用户来自同一IP(例如AOL),大多数人仍然使用IE,因此存储与浏览器相关的信息不会有帮助。还有很多人不允许保存cookies(数量不是很大)。这听起来好像投票没有那么严格,所以我建议创建一个随机值,存储在cookie和DB中,以唯一地(尽可能地)识别一些根本不正确的人;每个AOL客户都有自己的IP地址,直到他们断开连接并被分配一个新的IP地址。用户不太可能获得AOL IP地址,在此网站上投票,断开连接并让另一个用户连接到AOL以获得相同的IP地址并尝试在此网站上投票。-正如我在未注册的帖子中所说,这是你能做的最好的事情。它不是傻瓜式的,但它可以防止极端的滥用