【问题标题】:Restrict access to functionality for user by IP address通过 IP 地址限制用户对功能的访问
【发布时间】:2011-07-05 16:31:33
【问题描述】:

我有一个网站,允许任何用户使用某个功能,但每个用户只能使用固定的次数。

请允许我详细介绍一下,我们的“匿名/访客”用户每 24 小时只能在数据库中搜索 3 次条目。有没有办法可以使用 IP 来跟踪用户的尝试,在 3 次尝试后限制他们,然后让它在 24 小时后过期?

该网站是用 PHP 构建的,但无论哪种语言都可以提供此功能,我对此持开放态度。

编辑:

这个想法来自一个客户,他们有一个“库存商”列表来储存他们的产品,他们希望向网站的用户提供这些信息。然而,他不希望竞争对手利用他的系统并在他的库存商上“削弱”他。因此限制。如果你能提出一个更好的方法来达到同样的效果,那就太棒了

干杯, 丹

【问题讨论】:

  • 您是否考虑过当同一防火墙后的多个人以访客身份访问您的站点时会发生什么,例如,同一所学校的几个学生?这种方法可能会阻止大多数学生在数据库中搜索一次。
  • 请解释为什么客人每 24 小时只能搜索 3 次。我相信 SO 成员可以为您提供比基于 IP 地址进行限制更好的解决方案。

标签: php ip anonymous


【解决方案1】:

你必须使用 $_SERVER 全局变量,像这样:

if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {
  // restrict
}

但你必须考虑小次郎的说明:通过 IP 地址限制不是一个好主意。

编辑: 要有建设性。

如果您想在低级别执行此操作,可以使用 cookie。这些变量存储在用户的浏览器中,如果用户在本地清除cookies,他/她可以覆盖你的限制。
http://www.php.net/manual/en/function.setcookie.php

更好的解决方案是为此过滤器使用会话:
http://php.net/manual/en/session.examples.basic.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多