2013-02-26 2 views
0

Я использую php-скрипты, когда есть ошибки (например, 400,404,403 и т. Д.), Отправлять мне по электронной почте и сообщать о том, что делается.«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 имел другое доменное имя там. К счастью, письмо вернулось назад, поэтому я узнал о проблеме. Вот запись журналов веб-доступа

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

'$ to = 'От: ...'' ?! – deceze

ответ

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

Смежные вопросы