2014-01-08 73 views
0

我遇到了一些對我來說似乎很簡單的問題,但現在證明非常困難。也許我在想它 - 會愛你的幫助。PHP檢查對IP地址敏感的子域名

概述: 我有兩個接口,一個Web應用程序(1 客戶和1 客戶)。全部客戶獲得路由單向和全部客戶端獲得路由另一個。我根據他們的子域來確定顯示哪個登錄屏幕。 客戶獲得基本域(+ WWW)和客戶去[CLIENTNAME] .example.com的

問題: 我被上ENV做字符串操作之前確定這( 「HTTP_HOST」 ) - 請參閱下面的代碼。但是,現在在使用本地IP(用於與其他設備/人員進行測試)時會出現問題。我的代碼,它尋找'。'在因爲IP地址有3個點和「本地主機」主機環境未能有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的是否有幫助?

回答

0

我希望這個答案似乎不能避免你的具體問題,但在我看來,你正在邀請你的問題的替代品。我確實認爲你在考慮解決方案,特別是因爲它主要是在你的測試環境中爲你提供幫助。

我建議您定義自己的本地域進行測試,而不是使用IP地址。因此,例如,你可以(在你的hosts文件或同等學歷)定義:

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設置和配置本地域可能是有用的。

+0

這就是我這樣做的,但我注意到一個問題的原因是我正在開發一個移動應用程序來陪伴網絡應用程序。此移動應用程序需要通過我提供的LAN IP與本地計算機通話。據我所知,手機沒有我可以編輯的主機文件。所以除非我在cakephp bootstrap中自己編碼,否則我需要一個更好的方法來確定子域。 – isick

+0

我相信可以在Android手機上編輯hosts文件,但它需要一些第三方應用程序。這個討論例如:http://forum.xda-developers.com/showthread.php?t=514698 –

+0

謝謝你將看到更多。 – isick