当出现错误(如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”]未设置为“正确的”域名。
答案 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);
将返回“正在执行当前脚本的服务器主机的名称。如果脚本在虚拟主机上运行,则这将是为该虚拟主机定义的值。”