Obtener la IP real de un usuario

Aprende a obtener la IP real de un usuario en PHP con este tutorial paso a paso.

En desarrollo web es común necesitar obtener la IP de un usuario para poder diferenciarlo del resto. Gracias a esto podemos crear seguimientos, controles e incluso segmentación del público que nos visita.

En este tutorial voy a hacer un análisis de cçomo obtener la IP real de un usuario en PHP. Al final del tutorial te propongo una función que realiza esta labor para que puedas añadirla, si quieres, a tu librería de helpers.

Formas PHP de leer la IP de una visita web

En PHP existen diversas formas de leer la IP de un usuario visitante, cada una de ellas tiene un objetivo concreto y debemos saber diferenciarlas para elegir la mejor en cada caso.

Debemos tener en cuenta las distintas IPs que un usuario puede tener y a que se debe cada una, y seguidamente analizar que función PHP nos aporta la solución para cada caso.

Veamos los distintos tipos de IP que puede tener un usuario:

  • IP real de ISP. Es decir, el usuario tiene una IP normal y ha realizado un acceso a nuestro sitio sin saltos intermedios. Esta IP es la más fácil de leer en PHP.
  • IP de proxy. Este tipo de IP se da cuando un usuario visita nuestro sitio desde otro de forma que oculta su IP primaria. Esta dirección se puede leer sin problemas en PHP con una función correspondiente.
  • IP modificada. Esto en realidad no es una IP, sino que en realidad puede ser cualquier valor (texto o números) que quiera introducir un usuario. Este tipo de dirección IP la analizaré más adelante, y hay que tener especial cuidado con su contenido.

Obtener la IP normal de un usuario en PHP

Vamos a ver, en primer lugar, la forma básica de leer cualquier IP tradicional de un usuario, no es infalibre, pero es el primer método de lectura de direcciones que debes conocer.

Esta lectura es tan sencilla como acceder al valor de la variable de servidor REMOTE_ADDR. Esta variable perteneciente a la variable superglobal $_SERVER siempre almacena la IP del usuario. 

El código sería sencillo, un ejemplo sería el siguiente:

<?php
$ip_usuario = $_SERVER['REMOTE_ADDR'];  
?>

Leer la dirección IP de un usuario que utiliza Proxy

Aunque nuestro visitante utilice un proxy podemos leer su direción IP. Para esto usaremos una variable de servidor distinta a la anterior, la variable HTTP_X_FORWARDED_FOR.

 

function getRealIpAddr()  
{  
    if (!emptyempty($_SERVER['HTTP_CLIENT_IP']))  
    {  
        $ip=$_SERVER['HTTP_CLIENT_IP'];  
    }  
    elseif (!emptyempty($_SERVER['HTTP_X_FORWARDED_FOR']))  
    //to check ip is pass from proxy  
    {  
        $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];  
    }  
    else  
    {  
        $ip=$_SERVER['REMOTE_ADDR'];  
    }  
    return $ip;  
}

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.