【问题标题】:PHP: allow only two IP addresses at the same timePHP:同时只允许两个IP地址
【发布时间】:2010-05-11 10:53:08
【问题描述】:

我希望我的网站只能从两个 IP 地址访问。 当站点被超过 2 个 IP 地址访问时,它会出现错误。 任何人都可以在php中做到这一点,请帮助我

谢谢你

【问题讨论】:

  • 你的意思是同时有2个以上的id地址吗?
  • 实际上我的网站一次只需要从 2 个 IP 访问。当问题中出现第三个 ip 时,它会显示错误。当 2 个 ip 当前正在访问的站点中的一个注销时,只有第三个 IP 可以访问该站点。
  • 如果你真的想要的话,你会想以这种方式配置你的网络服务器,但我敢猜测它的影响会比你预期的更严重

标签: php ip-address


【解决方案1】:

试试

if($_SERVER['REMOTE_ADDR'] != '212.100.232.111' && $_SERVER['REMOTE_ADDR'] != '212.100.232.112'){
 die('No access');
}

【讨论】:

    【解决方案2】:

    如果您想将所有访问者限制在某些 IP 上,最简单/最快的方法是在您的网络服务器中执行此操作,例如使用 Apache .htaccess,而不是使用 PHP:

    Order Deny,Allow
    Deny From All
    Allow From 1.2.3.4
    Allow From 5.6.7.8
    

    【讨论】:

    • 不,我不需要将所有访问者限制在某些 IP 上
    【解决方案3】:

    要限制并发用户的数量,您需要将某种会话存储在数据库中。 然后,当新用户登录时,检查是否已经有两个来自不同 ip 的会话,在这种情况下会抛出错误。

    请注意,如果某人处于非活动状态,您必须使会话快速过期,这样他才不会因为其他人没有注销而阻止其他人登录。

    【讨论】:

    • 感谢您的回答。但是我对一件事感到困惑,如果有人不活动,我将如何使会话过期?我的意思是我怎么知道?
    • 每当登录用户执行某项操作时,您都会存储时间戳。然后您可以忽略非活动会话 ((time() - lastactivity) > delay) 和/或轻松删除它们。
    【解决方案4】:

    使用$_SERVER['REMOTE_ADDR'] 获取传入连接的地址,并针对它进行测试以执行适当的重定向或你有什么。

    【讨论】:

      【解决方案5】:

      您需要使用$_SERVER['REMOTE_ADDR'] 超全局变量:这应该为您提供客户端请求的IP 地址。只需测试它是否允许,如果不允许,则显示您的错误消息。

      【讨论】:

        猜你喜欢
        • 2011-04-13
        • 2017-05-13
        • 1970-01-01
        • 2017-09-28
        • 2019-01-23
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多