Вот код:
if (isset($_SERVER['HTTP_HOST']) === TRUE) { $host = $_SERVER['HTTP_HOST']; }
Как можно получить «неопределенный индекс HTTP_HOST» в строке внутри оператора if? Я имею в виду, что параметр индекса проверяется перед его использованием.
И почему HTTP_HOST иногда не может быть установлен?
Вы используете PHP-CLI?
HTTP_HOST работает в браузере.
HTTP_HOST всегда должен быть установлен, если вы работаете в браузере … тогда нет необходимости проверять … просто,
$host = $_SERVER['HTTP_HOST'];
достаточно
Обычно я опускал === TRUE
, поскольку здесь это не требуется, потому что isset()
возвращает логическое значение, но это не должно останавливать работу вашего кода.
Я бы также установил $ host разумным дефолтом (зависит от вашего приложения) перед оператором if. У меня есть общее правило не вводить новую переменную внутри условного, если она будет передана позже.
$host = FALSE; // or $host = ''; etc. depending on how you'll use it later. if (isset($_SERVER['HTTP_HOST'])) { $host = $_SERVER['HTTP_HOST']; }