2013-02-26 142 views
0

當有錯誤(如400,404,403等)時,我使用php腳本來給我發電子郵件並告知正在嘗試的內容。'HTTP_HOST'未被正確評估?

我注意到一個400錯誤,'from'和'to'沒有包含我的域名,而是另一個域名。這是一些我使用的代碼..

PHP代碼:

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

的變量$ 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

什麼網絡服務器你是你的網站託管?誰是你的虛擬主機? – 2013-02-26 12:11:43

+2

'$ to ='From:...''??! – deceze 2013-02-26 12:13:41

回答

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