Foros del Web » Programando para Internet » PHP »

Use of undefined constant HTTP_X_FORWARDED_FOR - assumed 'HTTP_X_FORWARDED_FOR' in /

Estas en el tema de Use of undefined constant HTTP_X_FORWARDED_FOR - assumed 'HTTP_X_FORWARDED_FOR' in / en el foro de PHP en Foros del Web. Me sale este error, y otros dos parecidos al intentar mostrar la ip del usuario que se conecta, utilizo un script para mostrar la ip ...
  #1 (permalink)  
Antiguo 22/02/2004, 06:53
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Use of undefined constant HTTP_X_FORWARDED_FOR - assumed 'HTTP_X_FORWARDED_FOR' in /

Me sale este error, y otros dos parecidos al intentar mostrar la ip del usuario que se conecta, utilizo un script para mostrar la ip verdadera, que obtuve de este foro:

<?php
function getip()
{

if ($_SERVER)
{

if ( $_SERVER[HTTP_X_FORWARDED_FOR] )
{

$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];

}
elseif ( $_SERVER["HTTP_CLIENT_IP"] )
{

$realip = $_SERVER["HTTP_CLIENT_IP"];

}
else
{

$realip = $_SERVER["REMOTE_ADDR"];

}

}
else
{

if ( getenv( 'HTTP_X_FORWARDED_FOR' ) )
{

$realip = getenv( 'HTTP_X_FORWARDED_FOR' );

}

elseif ( getenv( 'HTTP_CLIENT_IP' ) )
{

$realip = getenv( 'HTTP_CLIENT_IP' );

}
else
{

$realip = getenv( 'REMOTE_ADDR' );

}

}

return $realip;

}

echo getip();

?>


bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 22/02/2004, 09:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Los indices de los arrays son cadenas, y como cadenas deben ir entre comillas. Si una caena no va entre comillas, PHP piensa que es una constante, y si no encuentra esa nombre de constante, te da ese aviso.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 22/02/2004, 09:45
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
vale ahora solo me salen dos fallos:

undefined index: HTTP_X_FORWARDED_FOR in /


y

undefined index: HTTP_CLIENT_IP in /
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #4 (permalink)  
Antiguo 22/02/2004, 10:00
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bien, eso es porque no existen esos indices. Cambia los if (variable) por if (isset(variable))

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 22/02/2004, 10:11
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
Ok muy bien, no entiendo esto muy bien, si esos indices no existen, el isset no tendria q devolver false?
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #6 (permalink)  
Antiguo 22/02/2004, 11:21
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Si, de eso se trata, si devuelve true existe y usas ese valor. Si devuelve false es que no existe y pruebas con el siguiente valor.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 22/02/2004, 11:36
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 874
Antigüedad: 14 años, 6 meses
Puntos: 2
pero si antes no existian?? es que el isset engaña al codigo? haciendo creer que existen?

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #8 (permalink)  
Antiguo 22/02/2004, 12:39
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
isset() mira a ver si existe. Y poner la variable sin que exista genera ese mensaje que te salia antes de undefined.

No es lo mismo marcar un numero telefonico que no existe que llamar al servicio de informacion para saber si existe el numero. Si marcas un numero que no existe, te salta un mensaje de error, si llamas a informacion y no existe, no te da un mensaje de error, simplemente sabes que no existe.

El if (varaible) funciona en base a que si una variable no existe, PHP da el mensaje ese y devuelve NULL. Si tienes configurado PHP para que no muestre los errores de clase NOTICE, el mensaje no se ve.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:45.