Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
基于会话id和/或ip地址使用的php限制网站&;代理交换机帐户_Php_Mysql_Ip Address - Fatal编程技术网

基于会话id和/或ip地址使用的php限制网站&;代理交换机帐户

基于会话id和/或ip地址使用的php限制网站&;代理交换机帐户,php,mysql,ip-address,Php,Mysql,Ip Address,我真的不认为有一个傻瓜的方法来证明这一点,但当然我来这里的建议 我有一个项目,我想限制每个用户每天3次使用基于IP地址。当然,对于传统用例,我可以通过mysql表轻松做到这一点……但我如何解释那些足够聪明的人,他们可以使用(firefox的代理切换器插件)和/或打开新浏览器来获得新会话。每一次使用都会显示为一个新鲜、独特的用户 我是否坚持使用非傻瓜式的方法,或者还有其他方法可以尝试?我很确定,我们的大多数用户都不知道如何使用这些方法,甚至不知道这些方法是什么,但我还是想解释一下 编辑:如果有一个

我真的不认为有一个傻瓜的方法来证明这一点,但当然我来这里的建议

我有一个项目,我想限制每个用户每天3次使用基于IP地址。当然,对于传统用例,我可以通过mysql表轻松做到这一点……但我如何解释那些足够聪明的人,他们可以使用(firefox的代理切换器插件)和/或打开新浏览器来获得新会话。每一次使用都会显示为一个新鲜、独特的用户

我是否坚持使用非傻瓜式的方法,或者还有其他方法可以尝试?我很确定,我们的大多数用户都不知道如何使用这些方法,甚至不知道这些方法是什么,但我还是想解释一下


编辑:如果有一个非php的解决方案,我愿意接受任何想法。

实际上,您无法通过一种“傻瓜式”的方式来防止这种情况发生。不管你想出了什么,对任何对网络工作方式有模糊认识的人来说,解决这个问题都是微不足道的


您应该实施适当的身份验证系统,并根据用户ID进行限制,而不是根据访问服务的主机进行限制。

您只需使用cookie和ip阻止列表(当然,您也可以使用flash cookie、javascript的本地存储等)即可对其进行限制。在这两种情况下,您都可以节省使用您的服务的数量和他使用服务的次数。 如果用户只是试图删除他的cookie而没有获得新的ip(无论是代理还是设置新的cookie(因为您可以根据您的ip列表进行检查)。当然,反过来也是如此(如果他只是更改ip,则设置cookie)

这适用于大多数普通用户。但无法绝对确保没有人能绕过您的限制。

一些代理服务器可能(也可能不)在HTTP头中设置真实的ip地址,如HTTP_CLIENT_ip或HTTP_FORWARDED_,因为您还可以尝试根据
$\u SERVER
中的其他变量来区分用户

[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 5.1; rv:19.0) Gecko/20100101 Firefox/19.0
[HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[HTTP_ACCEPT_LANGUAGE] => en-US,en;q=0.5
[HTTP_ACCEPT_ENCODING] => gzip, deflate
[HTTP_X_DNT_OVERSION] => 2.2.1.611
[HTTP_X_DNT_COHORT] => 2012-8-2
[HTTP_X_DNT_VERSION] => 2.2.8.307 FF ffamo 10008

这不是完美的,它们都可以伪造,你会得到很多误报,因为很多人都有这样的设置,但如果你真的那么绝望,这可能会有所帮助。

没有什么可以阻止别人注册更多的用户ID,除非你正在做一些事情,比如要求信用卡授权才能访问。我同意这一点这是最好的方法。我确实要求我的用户输入他们的电子邮件以查看结果,这样我就可以根据当时的电子邮件地址强制执行。打得好,非常感谢。@ceejayoz是一个非常有效的观点。我想这是一个你有多关心费率限制的问题。@ceejayoz是非常正确的。在我的情况下,用户必须输入一封电子邮件地址,然后通过发送到真实电子邮件地址的链接进行验证。虽然这仍然不是万无一失的,但对于没有多个电子邮件地址的用户来说,这将是一个巨大的不便。如果我可以访问代理列表并可以动态切换,则Cookie和IP阻止列表是无用的。我无法在服务器上强制实施Cookie-正如在另一个答案中所讨论的,你可以增加更多的障碍,但不能完全阻止它。