创建一个PHP web应用程序,允许用户对提交的内容进行投票-如何最大限度地减少滥用
我只编写了几个小的php web应用程序,现在我正在编写代码,以允许用户提交短篇故事。这些故事将展示出来,并允许其他人投票支持。获胜者会得到一些相当有价值的东西,我很怀疑人们会试图操纵它 Debian/Apache/PHP5.2/jquery 用户无需登录/验证 用户可以对多个故事进行投票,但每个故事只能投票一次创建一个PHP web应用程序,允许用户对提交的内容进行投票-如何最大限度地减少滥用,php,web-applications,Php,Web Applications,我只编写了几个小的php web应用程序,现在我正在编写代码,以允许用户提交短篇故事。这些故事将展示出来,并允许其他人投票支持。获胜者会得到一些相当有价值的东西,我很怀疑人们会试图操纵它 Debian/Apache/PHP5.2/jquery 用户无需登录/验证 用户可以对多个故事进行投票,但每个故事只能投票一次 它是否简单到只需在每个故事上加上一个IP地址,而不计算来自该IP的其他提交内容?谢谢你的建议。不,IP地址不是一个好的标识符。从手机浏览的用户可能永远不会拥有相同的IP地址(甚至家庭用
它是否简单到只需在每个故事上加上一个IP地址,而不计算来自该IP的其他提交内容?谢谢你的建议。不,IP地址不是一个好的标识符。从手机浏览的用户可能永远不会拥有相同的IP地址(甚至家庭用户也可以定期更改其IP地址)
另一方面,您的方法会阻止多人从同一个房屋/办公室/代理服务器浏览不,这并不是那么简单。欺骗IP地址很容易,人们可以从几个地方投票。此外,很可能有不同的人/计算机使用相同的IP地址连接。甚至(极有可能)不同的人尝试使用同一台计算机(和浏览器)投票 即使是登录系统也不是防水的:你根本无法验证人们的身份。用户可以输入不同的电子邮件地址和虚假数据,如姓名和出生日期 另一方面,如果您想在给定计算机上获得给定浏览器的唯一标识(与唯一用户相反),请查看并阅读
除此之外,您仍然可以(尝试)使用cookie来识别投票的浏览器。最好将信息存储在两个位置:
将这两种方法结合起来,应该可以让你知道谁投了票,投了什么票,而不是让别人再次投票。当然,如果他们进入多台机器、删除cookie和/或更改IP,您无法阻止这种情况。您可以建立一个用户配置文件数据库。因此,你提取某些用户信息,如IP、浏览器、位置、操作系统版本等,然后创建一个标准匹配或加权匹配系统,在人们“太可疑”的情况下将其剔除。是的,你仍然会在这里或那里得到误报,但如果你像你所说的那样对合法性抱有妄想,你最好在验证上有点过火。为了获得更好的结果,请始终返回一条“成功”消息,以便他们认为自己在玩系统游戏,而不要试图找到击败它的方法。使用php,您可以像这样获得他们浏览器的IP地址和用户代理 IP:
$\u服务器['REMOTE\u ADDR']
用户代理:$\u服务器['HTTP\u用户代理]
不幸的是,这不是一个完美的方式,但它确实减少了滥用
您可以通过使用登录系统并使用cookies存储此人投票的内容来加强这一点。但即便如此,它仍然不完美。以下是我过去所做的:
- 检查是否有饼干
- 在时间窗口内检查IP地址
- 如果确定,设置cookie并更新IP地址和时间(增加该IP的时间窗口?)
- 总是试图给人一种印象,用户的投票被计算在内了
不可能抓住所有骗子,如果是匿名投票,更是如此。如果决定不实施登录/密码界面,则应使用双重验证系统。没有什么是十全十美的,但凭常识我相信你可以做些好事
- 也许他们在一所房子里,他们都在投票
- 也许他们在办公室里,他们都在不同的机器上投票
- 也许他们在公共网络中,比如咖啡馆或机场
唯一识别投票者