“HTTP_HOST”未正确评估?

时间:2013-02-26 12:10:10

标签: php

当出现错误(如400,404,403等)时,我会使用php脚本给我发电子邮件并告知正在尝试的内容。

我注意到400错误,'from'和'to'不包含我的域名,而是另一个域名。这是我使用的一些代码..

PHP代码:

$http_host = $_SERVER["HTTP_HOST"]; 
$http_host = str_replace("www.", "", $http_host); 
$from = "From: webmaster@" . $http_host . "\r\n"; 
$to = "From: webmaster@" . $http_host . "\r\n";  

var $ http_host在那里有另一个域名。幸运的是,电子邮件反弹了,所以我意识到了这个问题。这是Web访问日志条目

94.102.51.246 - - [23/Feb/2013:16:17:49 +1100] "GET http://24x7-allrequestsallowed.com/?...RWJWS_FA%40FQN HTTP/1.1" 400 2815 "-" "Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20100101 Firefox/16.0"

似乎$_SERVER["HTTP_HOST"]被评估为'24x7-allrequestsallowed.com'

我对如何将其解析为URL感到困惑,但更不安的是$ _SERVER [“HTTP_HOST”]未设置为“正确的”域名。

1 个答案:

答案 0 :(得分:2)

变化:

 $http_host = $_SERVER["HTTP_HOST"]; 
 $http_host = str_replace("www.", "", $http_host); 

...到...

 $http_host = $_SERVER["SERVER_NAME"]; 
 $http_host = str_replace("www.", "", $http_host); 

将返回“正在执行当前脚本的服务器主机的名称。如果脚本在虚拟主机上运行,​​则这将是为该虚拟主机定义的值。”

来源:http://php.net/manual/en/reserved.variables.server.php