我不知道,也许是个虫子。
我的服务器上有2个virutalhost。
虚拟主机1.com虚拟主机2.com
如果我使用端口80打开virtualhost1.com (virtualhost1.com:80)
$_SERVER['HTTP_HOST']='virtualhost1.com';但是如果我打开virtualhost2.com:80
$_SERVER['HTTP_HOST']='virtualhost2.com:80'; // NOTE: with port number我能知道为什么吗?
发布于 2010-12-22 07:21:46
$_SERVER['HTTP_HOST']的值直接取自Host: HTTP请求报头。发出请求的客户端似乎正在以这种方式填充它。
我建议使用$_SERVER['SERVER_NAME'],因为它的值将从您的虚拟主机配置中设置。然而,正如Flimm在下面提到的,即使是SERVER_NAME的可靠性也仍然依赖于服务器配置(查看this answer了解更多信息)。
发布于 2016-05-20 21:17:25
下面的函数总是返回没有端口的实际主机(用户输入的主机),而且几乎是可靠的:
function getRealHost(){
list($realHost,)=explode(':',$_SERVER['HTTP_HOST']);
return $realHost;
}https://stackoverflow.com/questions/4504831
复制相似问题