
Es muy probable que alguna vez hayas tenido la necesidad de conocer la dirección IP de los visitantes a tu/s web/s. Ya sea porque necesites mostrar información de forma geolocalizada, para generar estadísticas de visitas por países, para realizar baneos de bots, o para cualquier gran variedad de posibilidades que tenemos cuando podemos saber la IP de quien nos visita.
Cómo obtener la dirección IP en PHP
Para esto, PHP facilita un conjunto de variables con las cuales podemos obtener dicha información. Conociendo estas variables, que se encuentran dentro del objeto global $_SERVER, podremos inclusive saber si el visitante se encuentra tras una proxy.
La siguiente función en PHP te muestra como obtener la IP de quien visita tu página web:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //Obtener la IP del visitante function obtenerIP(){ $ip = ""; if ($_SERVER['HTTP_CLIENT_IP']) $ip = $_SERVER['HTTP_CLIENT_IP']; else if($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; else if($_SERVER['HTTP_X_FORWARDED']) $ip = $_SERVER['HTTP_X_FORWARDED']; else if($_SERVER['HTTP_FORWARDED_FOR']) $ip = $_SERVER['HTTP_FORWARDED_FOR']; else if($_SERVER['HTTP_FORWARDED']) $ip = $_SERVER['HTTP_FORWARDED']; else if ($_SERVER['REMOTE_ADDR']) $ip = $_SERVER['REMOTE_ADDR']; return $ip; } |
Como puedes ver, esta función devolverá una cadena con la IP del visitante aún cuando éste se encuentre tras una proxy. Esperamos que te sea de gran ayuda.
Puedes conocer cual es tu actual dirección IP utilizando nuestra herramienta online del siguiente enlace.
(Actualizado) A continuación te mostramos el código de una versión actualizada y mejorada para obtener la dirección IP del visitante de tu página web.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function obtenerIP () { if ( filter_var( $_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP ) ) { return $_SERVER['HTTP_CLIENTE_IP']; } elseif ( filter_var ( $_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP ) ) { return $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif ( filter_var ( $_SERVER['HTTP_VIA'], FILTER_VALIDATE_IP ) ) { return $_SERVER['HTTP_VIA']; } else { return $_SERVER['REMOTE_ADDR']; } } |
En esta ocasión, se filtra la variable, en cuestión en cada caso, con respecto al filtro de validación de IP. En caso de pasar dicha variable el filtro, devolvemos la misma como IP válida del usuario visitante.
