未定义的索引HTTP_HOST即使已被选中

don*_*onk 18 php apache

这是代码:

if (isset($_SERVER['HTTP_HOST']) === TRUE) {
  $host = $_SERVER['HTTP_HOST'];
}
Run Code Online (Sandbox Code Playgroud)

如何在if语句中的行上获得"Undefined index HTTP_HOST"?我的意思是,在使用之前检查索引设置.

为什么有时不设置HTTP_HOST?

Adi*_*dil 19

你在使用PHP-CLI吗?

HTTP_HOST在浏览器上工作.

  • 为什么它不适用于CLI,什么是好的解决方案? (5认同)

Zer*_*ran 5

实施不当的浏览器可能会忽略发送 que 主机标头信息,请尝试以下示例:

telnet myphpserver.com 80
> GET / <enter><enter>
Run Code Online (Sandbox Code Playgroud)

在这种情况下 $_SERVER['HTTP_HOST'] 没有分配值,在这种情况下你可以使用 $_SERVER['SERVER_NAME'] 但前提是 $_SERVER['HTTP_HOST'] 为空,因为没有相同的。


Suj*_*wal 2

如果您在浏览器上运行,则必须始终设置 HTTP_HOST...那么无需检查...简单地说,

$host = $_SERVER['HTTP_HOST'];
Run Code Online (Sandbox Code Playgroud)

足够

  • 蹩脚的浏览器(或机器人)可能会忘记发送 HOST 标头;在这种情况下,不会设置 HTTP_HOST 变量。 (8认同)
  • 你有一个错字 - 分号前的括号。我不建议不检查。 (2认同)