【问题标题】:Why does if condition not working? $_SERVER['SERVER_NAME'] . $_SERVER['REQUREST_URI'] [closed]为什么如果条件不起作用? $_SERVER['SERVER_NAME'] 。 $_SERVER['REQUEST_URI'] [关闭]
【发布时间】:2014-08-17 14:20:33
【问题描述】:

我正在尝试在每个网址上显示不同的单词。

$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 语句..

特殊字符 & 是否使它不起作用?

【问题讨论】:

  • if($host=="http://www.thesofacompany.ca...
  • @Fred-ii- 该方案不是服务器名称的一部分。
  • 你能简单地echo $host 看看$host = $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; 正在创建什么吗?答案就在你面前。
  • 在 $host = $_SERVER['SERVER_NAME'] 之后回显。 $_SERVER['REQUEST_URI'];并查看 $host 的连接
  • @NiettheDarkAbsol 我的错误;我的立场是正确的。

标签: php url


【解决方案1】:

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

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

所以你的if 应该是:

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

【讨论】:

    【解决方案2】:

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

    这只会确保您有一个小写字符串可供比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      相关资源
      最近更新 更多