Я пытаюсь показать другое слово на каждом 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"; }