Variable HTTP_HOST no definida. Porque?

Iniciado por Skeletron, 7 Abril 2013, 03:27 AM

0 Miembros y 1 Visitante están viendo este tema.

Skeletron

Hola gente.
Resulta que, tengo un codigo fuente (PHP) que hace algo así en el index:
<?php
if($_SERVER['HTTP_HOST'] == 'www.xxx.com')
   error_reporting(0);
elseif($_SERVER['HTTP_HOST'] == 'beta.xxx.com')
   error_reporting(E_ALL ^ E_NOTICE);
else
   error_reporting(0);


Y veo que en el LOG de error de apache, aparecen estos errores:
Notice:  Undefined index: HTTP_HOST
eso, repetido muy muchas veces.

Como que, HTTP_HOST no está definido... Pero, si o si tiene que estar definido... O NO? Porque causa no podría estar definida esa variable?
El servidor es una PC mia que está en mi hogar.

Es raro... O no? Que puede estar pasando?

EFEX

No te preocupes no es un error solo te indica que estas tratando de acceder a una variable que no esta definida en este caso un array., se utiliza la función isset() para saber si está definida.

http://php.net/manual/es/function.isset.php
GITHUB 

Skeletron

Entiendo perfectamente ese tema, pero el problema, es que esa variable SIEMPRE debería estar definida. El señor Apache la inicializa...
Mira bien de cual variable te hablo: $_SERVER['HTTP_HOST']
Las variables $_SERVER siempre vienen inicializadas.

Wofo

¿Y si tienes mal configurado Apache?

No es que entienda mucho del tema, pero es una idea.

#!drvy

CitarPorque causa no podría estar definida esa variable?

Si utilizas otros métodos para acceder al php que no implican un navegador moderno... osease, esta variable no esta definida si no envías la cabecera "HOST:" al servidor.

Saludos

Skeletron

Mil gracias por la respuesta!
el motor de Google capaz que haga lo mismo, no?
Que tan MALO sería hacer un "exit;" cuando hay ese error?

#!drvy

#6
Na GoogleBot no es.. el si que envía headers.. la verdad es que HOST: es una cabecera muy básica.. no hay muchos bots que no la envien xD.

Hasta el file_get_contents() de PHP envia el HOST: xD

PD: Una historia muy bonita sobre googlebot: http://googlewebmastercentral.blogspot.com.es/2008/03/first-date-with-googlebot-headers-and.html xD

Saludos

Skeletron

Bueno, muchas gracias por tu aporte. la verdad es que me has solucionado un tema que no encontré respuesta en ningun lugar.
Debería cortarles la conexion a esos "usuarios" que entran de ese modo.

Skeletron

Les comento que, luego de añadir esta linea a mi codigo:
if(!isset($_SERVER['HTTP_HOST']))
   die('Su browser es demasiado viejo. No envía la cabecera HOST. Descargue Chrome!');

Google Bot dejó de acceder a mi sitio web. Así que, es GOOGLE BOT quien no envía esa cabecera. WARNING! jeje