【问题标题】:PHP Check subdomain sensitive to IP addressPHP检查对IP地址敏感的子域
【发布时间】:2014-01-08 22:02:17
【问题描述】:

我遇到了一些起初对我来说似乎很简单但现在证明非常困难的问题。也许我想多了 - 很想得到你的帮助。

概述: 我有一个带有两个接口的 Web 应用程序(1 个用于 clients,1 个用于 customers)。所有 客户 都以一种方式路由,而所有 客户 都以另一种方式路由。我根据他们的子域确定要显示的登录屏幕。 customers 获取基本域 (+www),clients 转到 [clientName].example.com

问题: 我之前通过对 env("HTTP_HOST") 进行字符串操作来确定这一点——请参见下面的代码。但是,现在在使用本地 IP(用于与其他设备/人进行测试)时会出现问题。我的代码,它寻找“。”在主机环境中失败,因为 IP 有 3 个点,而 'localhost' 有 0

这些是我建立的不同命名参数以及我想要的路线...

CUSTOMER ----------------------------- CLIENT
                xyz.example.com ------>
        <------ www.example.com
        <------ example.com

                xyz.localhost   ------>
        <------ www.localhost
        <------ localhost

                xyz.192.168.X.X ------>
        <------ www.192.168.X.X
        <------ 192.168.X.X

我可能真的想太多了,我希望有一些简单的 PHP 函数,比如“get_subdomain()”,可以为我做这件事。但我没有看到它,真的很想得到一些帮助。

谢谢!

当前代码:

$host = env("HTTP_HOST");
$group = null;

// if there is exactly one dot IE example[dot]com then there is no subdomain
if(substr_count($host,'.')==1){
    $group = 'customer'
}else{ // there is a subdomain
    $subdomain = substr($host, 0, strpos($host, "."));
    if($subdomain=='www'){
        $group = 'customer'
    }else{
        $group = 'client'
    }
}

CakePhp 是否有帮助?

【问题讨论】:

    标签: php cakephp routing ip subdomain


    【解决方案1】:

    我希望这个答案似乎不会回避您的具体问题,但在我看来,您正在邀请您的问题中的替代方案。我确实认为您对解决方案的思考过度了,尤其是因为它主要是为了在您的测试环境中为您提供帮助。

    我建议您定义自己的本地域进行测试,而不是使用 IP 地址。因此,例如,您可以(在您的主机文件或等效文件中)定义:

    xyzclient.mylocaldomain  192.168.1.1 [or whatever your local ip is]
    www.mylocaldomain        192.168.1.1 
    xyz.localhost            192.168.1.1
    www.localhost            192.168.1.1
    

    那么您无需为本地或实时环境编写任何不同的代码。以防万一:this guide 设置和配置本地域可能会有用。

    【讨论】:

    • 我就是这样做的,但我注意到问题的全部原因是我正在开发一个移动应用程序来配合网络应用程序。这个移动应用程序需要通过我提供的 LAN IP 与我的本地机器通信。据我所知,手机没有我可以编辑的主机文件。因此,除非我在 cakephp 引导程序本身中对其进行硬编码,否则我需要一种更好的方法来确定子域。
    • 我相信可以在 Android 手机上编辑 hosts 文件,尽管它需要一些 3rd 方应用程序。本次讨论例如:forum.xda-developers.com/showthread.php?t=514698
    • 感谢会进一步调查。
    猜你喜欢
    • 2012-11-01
    • 2013-07-02
    • 2013-08-22
    • 2012-08-03
    • 1970-01-01
    • 2012-01-18
    • 2021-02-12
    • 2019-11-04
    • 2011-06-09
    相关资源
    最近更新 更多