Почему, если условие не работает? $ _SERVER . $ _SERVER

Я пытаюсь показать другое слово на каждом 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 не работает. Программа пропускает второй оператор if, даже если $ host имеет правильные строки.

Имеет ли особый характер и делает его неработоспособным?

Просто догадайтесь, но сравнение строк чувствительно к регистру, поэтому, если 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"; } 

Это просто убедится, что у вас есть строчная строка для сравнения.

Вместо того, чтобы полагаться на переменные сервера, вместо этого вы должны использовать параметры, которые вам даны.

А именно, довольно безопасно предположить, что вы все равно работаете над index.php , и если имя сервера было неправильным, вы бы оказались на совершенно другом веб-сайте.

Итак, ваше, if должно быть:

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