2014-07-25 39 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; 
}