Ejemplo PHP: obtener la ip real de un visitante

logo de php

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.

 

 

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: 54.157.225.99

 

 

Valoración General

[Valoraciones:  7    Promedio:  3.4 de 5]