Ejemplo de código fuente en PHP de un método para obtener la ip real de un visitante a una determinada página, muy útil a veces para por ejemplo guardar esa ip de ese usuario en un campo de una base de datos.
ÍNDICE
Descripción del ejemplo
Mediante $_SERVER[‘HTTP_CLIENT_IP’] verificamos si la IP es una conexión compartida.
Mediante $_SERVER[‘HTTP_X_FORWARDED_FOR’] verificamos si la IP pasa por un proxy.
Mediante $_SERVER[‘REMOTE_ADDR’] obtenemos la dirección IP desde la cual está viendo la página actual el usuario.
De todas formas, la única información realmente fiable para conseguir la IP real, es la que nos da $_SERVER[‘REMOTE_ADDR’]. Conseguir la IP real de una IP que pasa por proxy o por conexiones compartidas, a veces es complicado si ese servidor proxy está muy bien configurado, o si alguien usa técnicas de Spoofing
Código
Método sencillo.
<?php
function getRealIP() {
if (!empty($_SERVER['HTTP_CLIENT_IP']))
return $_SERVER['HTTP_CLIENT_IP'];
if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
return $_SERVER['HTTP_X_FORWARDED_FOR'];
return $_SERVER['REMOTE_ADDR'];
}
?>
Método avanzado.
<?php
function getRealIP()
{
if (isset($_SERVER["HTTP_CLIENT_IP"]))
{
return $_SERVER["HTTP_CLIENT_IP"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_X_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_X_FORWARDED"]))
{
return $_SERVER["HTTP_X_FORWARDED"];
}
elseif (isset($_SERVER["HTTP_FORWARDED_FOR"]))
{
return $_SERVER["HTTP_FORWARDED_FOR"];
}
elseif (isset($_SERVER["HTTP_FORWARDED"]))
{
return $_SERVER["HTTP_FORWARDED"];
}
else
{
return $_SERVER["REMOTE_ADDR"];
}
}
?>
Demo del ejemplo
La IP con la que estás visitando esta web es: 44.200.101.84