Php 为什么条件不起作用$_服务器[';服务器名称';]$_服务器[';请求URI';]

Php 为什么条件不起作用$_服务器[';服务器名称';]$_服务器[';请求URI';],php,url,Php,Url,我试图在每个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&informat

我试图在每个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语句


特殊字符是否会使其无法工作?

与其依赖服务器变量,不如使用给定的参数

也就是说,假设您正在使用
index.php
是相当安全的,如果服务器名称错误,那么您将位于完全不同的网站上

因此,您的
if
应该是:

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

这只是猜测,但是字符串比较区分大小写,因此如果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";
}

这将确保您有一个小写字符串进行比较。

如果($host==)http://www.thesofacompany.ca...
@Fred ii-方案不是服务器名称的一部分。您可以简单地
echo$host
查看
$host=$\u服务器['server\u name'].$\u服务器['REQUEST\u URI']
正在创建?答案就在您面前。在$host=$\u SERVER['SERVER\u NAME'].$\u SERVER['REQUEST\u URI']之后进行回显,然后查看$host@NiettheDarkAbsol我的错误;我将得到纠正。