2014-07-25 42 views
0

我必須出現在PHP如果要去訪問以外的一些現有的已重定向到該帳戶的消息。HTTP_HOST有和沒有WWW

例如,我試圖運行,如果該域名是www或非WWW的命令是:

if($_SERVER[ 'HTTP_HOST' ] != ('xxx.co.uk' && 'www.xxx.co.uk')) 

然而,這似乎並不工作,因爲如果我去xxxx.co.uk(其是指向他們賬戶的另一個域),如果內容仍然不顯示。

上午明顯缺失的上述明顯的東西?如果上面的一個沒有作品試試下面一個

if(($_SERVER[ 'HTTP_HOST' ] != "xxx.co.uk") && ($_SERVER[ 'HTTP_HOST' ] != "www.xxx.co.uk")) 
+0

我想你需要在你的if語句中重複'__ SERVER ['HTTP_HOST']'。 'if($ _ SERVER ['HTTP_HOST']!='xxx.co.uk'|| $ _SERVER ['HTTP_HOST'] =='www.xxx.co.uk')'我不確定你在問什麼但是,如果域名是www,或者不是www'? –

+0

我想你會在這裏找到你要找的東西: http://stackoverflow.com/questions/1459739/php-serverhttp-host-vs-serverserver-name-am-i-understanding -the-ma – PHPglue

回答

-1

試試這個用 「」,而不是'

if($_SERVER[ 'HTTP_HOST' ] != ("xxx.co.uk" && "www.xxx.co.uk")) 

是正確的:

if ($_SERVER['HTTP_HOST'] != 'xxx.co.uk' || $_SERVER['HTTP_HOST'] == 'www.xxx.co.uk') 

退房的手冊,瞭解更多:http://php.net/manual/en/language.operators.comparison.php

+0

這工作。謝謝 – Palemo

+0

@Palemo我可以知道哪一個工作正常......第一個或第二個...... – Kumaran

+0

第一個將永遠不會正常工作 - &&''操作符不能像那樣工作。 – duskwuff

0

在這裏,你去。爲什麼不使用preg_match()

if(!isset($_SERVER['HTTP_HOST']) || !preg_match('/^(www\.)?xxx(x)?\.co\.uk$/', $_SERVER['HTTP_HOST'])){ 
    header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request'); 
    die; 
}