Foros del Web » Programando para Internet » PHP »

ayudita

Estas en el tema de ayudita en el foro de PHP en Foros del Web. hola tengo la siguiente funcion que encontre para rescatar la ip se supone que lo que quiero es saber que ip tiene el equipo que ...
  #1 (permalink)  
Antiguo 09/01/2004, 10:58
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 14 años, 2 meses
Puntos: 0
ayudita

hola tengo la siguiente funcion que encontre para rescatar la ip
se supone que lo que quiero es saber que ip tiene el equipo que ingreso al foro de mi pagina e ingreso tema
la funcion no me arroja ningun error pero simpre rescata la ip de un mismo servidor (supongo que sera de la empresa que me presta servicio de webhosting).

function GetIP()
{
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}/*-------GetIP()-------*/
?>

gracias por su ayuda
  #2 (permalink)  
Antiguo 09/01/2004, 11:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues la función parece funcionar bien. Es más .. evalua todos los casos posible para obtener la "IP" real del usuario (aunque este pase por un proxy).

En ningú caso se usan variables de servidor (entorno?) que tengan que ver con tu servidor. Todas son referentes a tu cliente conectado (por supuesto si usas tu PC como servidor y cliente . .te va a dar la IP tuya ..)

Lo más básico (si usas PHP 4.1.0 en adelante) .. para obtener la IP de un cliente conectado a tu script sería:

Código PHP:
echo $_SERVER['REMOTE_ADDR']; 
(siempre y cuando tu cliente no pase por un proxy tipo "el de telefónica - españa")

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 09/01/2004, 11:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 139
Antigüedad: 14 años, 2 meses
Puntos: 0
y lo demas lo saco todo
  #4 (permalink)  
Antiguo 09/01/2004, 11:39
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. no sé de donde habrás sacado esa función y si adjuntaba alguna explicación de como funciona .. Por mi parte he intentado explicarte más o menos que es lo que hace.

Si X usuario tuyo entra bajo un proxy (como en ejemplo que te dejé .. ) con la variable de servidor (que es parte del protocolo HTTP) "REMOTE_ADDR" no vas a obtener la IP "real" .. para eso, esa función usa otras variables de servidor que "pueden" o no estar definidas (por eso la función en sí es un buen montón de condicionales).

Ademas, esa función intenta obtener el valor de esas variables de servidor desde todos los médios posibles y bajo versiones/configuraciones de PHP distintas .. Ya te puse el comentario que .. si usas PHP 4.1.0 en adelante .. podràs usar los arrays superglobales $_SERVER .. pero si es inferior deberías usar $HTTP_SERVER_VARS .. y si usas PHP bajo CGI o (no estoy seguro) versiones inferiores a 4.0.? de PHP .. debes usar la función getenv() ) .. Todo esto ya lo hace esa función (o debería).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 20:40.