Lenguaje de programación PHP
Os mostramos una función que intenta obtener la IP real del cliente que accede a la web. No siempre funciona puesto que depende del proveedor de servicios de Internet que tenga y del tipo de seguridad (router, cortafuegos, etc.).
function obtenerIPCliente()
{
if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
{
$ipCliente =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );
$entradasL = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);
reset($entradasL);
while (list(, $entradaActual) = each($entradasL))
{
$entradaActual = trim($entradaActual);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entradaActual, $listaIPs) )
{
$ipPrivada = array(
'/^0\./',
'/^127\.0\.0\.1/',
'/^192\.168\..*/',
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
'/^10\..*/');
$ipEncontrada = preg_replace($ipPrivada, $ipCliente, $listaIPs[1]);
if ($ipCliente != $ipEncontrada)
{
$ipCliente = $ipEncontrada;
break;
}
}
}
}
else
{
$ipCliente =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );
}
return $ipCliente;
}
Para probar esta función:
echo obtenerIPCliente();
Publicado el: 2009-08-28