0

当出现错误(如 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 在那里有另一个域名。幸运的是,电子邮件被退回,所以我意识到了这个问题。这是网络访问日志条目

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"] 没有设置为“正确的”域名。

4

1 回答 1

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

于 2013-02-26T12:14:59.880 回答