为什么条件不起作用? $ _SERVER ['SERVER_NAME']。 $ _ SERVER [ 'REQUREST_URI']

时间:2014-06-26 16:11:42

标签: php url

我想在每个网址上显示不同的字词。

$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if($host=="www.thesofacompany.ca/index.php?route=information/contact"){
    echo "A";
}
if($host=="www.thesofacompany.ca/index.php?route=information/information&information_id=4") //This if statement isn't working..
{
    echo "B";
}

这是我用过的if语句..但第二个if语句不起作用。即使$ host具有正确的字符串,程序也会跳过第二个if语句。

特殊角色&让它不起作用?

2 个答案:

答案 0 :(得分:0)

您应该使用您给出的参数,而不是依赖服务器变量。

也就是说,无论如何,假设您正在index.php工作是相当安全的,如果服务器名称错误,那么您将在一个完全不同的网站上。

所以你的if应该是:

if( isset($_GET['route'],$_GET['information'])
 && $_GET['route'] == "information/information"
 && $_GET['information'] == 4) {
    echo "B";
}

答案 1 :(得分:0)

只是一个猜测,但字符串比较区分大小写,所以如果url的大小写不正确,它将评估为false。如果您在IIS上托管,这可能是一个问题,因为IIS不区分大小写。您可能想尝试:

$host = strtolower($_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
if($host=="www.thesofacompany.ca/index.php?route=information/contact"){
echo "A";
}
if($host=="www.thesofacompany.ca/index.php?route=information/information&information_id=4") //This if statement isn't working..
{
echo "B";
}

这只会确保你有一个小写字符串来比较。