function getRealIP()
{
if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
{
$client_ip = (!empty($_SERVER['REMOTE_ADDR']))?
$_SERVER['REMOTE_ADDR']:
((!empty($_ENV['REMOTE_ADDR']))?
$_ENV['REMOTE_ADDR']:"unknown");
// los proxys van añadiendo al final de esta
// cabecera las direcciones ip que van "ocultando".
// Para localizar la ip real del usuario se
// comienza a mirar por el principio hasta
// encontrar una dirección ip que no sea del
// rango privado. En caso de no encontrarse
// ninguna se toma como valor el
// REMOTE_ADDR
$entries = split('[, ]',
$_SERVER['HTTP_X_FORWARDED_FOR']);
reset($entries);
while (list(, $entry) = each($entries))
{
$entry = trim($entry);
if (preg_match(
"/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/",
$entry, $ip_list))
{
// http://www.faqs.org/rfcs/rfc1918.html
$private_ip = array('/^0\./',
'/^127\.0\.0\.1/',
'/^192\.168\..*/',
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
'/^10\..*/');
$found_ip = preg_replace($private_ip,
$client_ip, $ip_list[1]);
if ($client_ip != $found_ip)
{
$client_ip = $found_ip;
break;
}
}
}
}
else
{
$client_ip = (!empty($_SERVER['REMOTE_ADDR']))?
$_SERVER['REMOTE_ADDR']:
((!empty($_ENV['REMOTE_ADDR']))?
$_ENV['REMOTE_ADDR']:"unknown");
}
return $client_ip;
}
var_dump(getRealIP());
Obtenido de EsLoMas.com
miércoles, 4 de marzo de 2009
Php: Obtener ip real del ciente
A continuación cómo obtener la dirección IP real del cliente en Php.
Explicación con más detalle de la función aquí
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario