Este artículo ya se encuentra obsoleto.
Para una referencia actual leer: Cómo obtener la dirección IP de un Visitante en PHP o Node.js
La dirección IP (IP Address) del cliente nos permite conocer exactamente de donde es el usuario. Es útil por ejemplo si deseamos segmentar la publicidad por país o también para prevenir el Spam pues hay direcciones IP conocidas desde donde se hace el envío del spam.
Forma tradicional del Obtener el IP
Para obtener el IP comúnmente se utiliza la variable global $_SERVER con la propiedad REMOTE_ADDR, entonces podríamos imprimir el IP de la siguiente forma:
echo $_SERVER["REMOTE_ADDR"]; // muestra: 200.49.6.149
Pero que pasa si el usuario esta accediendo desde un proxy o desde un IP compartido, entonces este valor del IP obtenido no será el correcto. Para resolver este dilema hay propiedades adicionales que podemos utilizar:
// IP compartido echo "IP Share: " . $_SERVER['HTTP_CLIENT_IP'] . "
"; // IP Proxy echo "IP Proxy: " . $_SERVER['HTTP_X_FORWARDED_FOR'] . "
"; // IP Acceso echo "IP Access: " . $_SERVER['REMOTE_ADDR'] . "
";
Obtener el IP real del usuario
Entonces basado en estas tres formas de obtener el IP del cliente crearemos una función llamada getRealIP el cual devolverá el IP del cliente.
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']; }
La función verifica si existen las primeras variables del servidor y según el resultado nos devuelve el valor del IP. Una vez obtenida este IP lo podemos utilizar para verificarlo con Akismet para saber si es un IP desde donde se hace spam por ejemplo.
Mas información
Comentarios Total 22 comentarios
Publicado: 07/08/2009 4:14 pm
Excelente articulo… Gracias por la información, pero tengo una duda (trataré de ser lo más explicito posible):
Desde hace tiempo utilizo un código similar para obtener la IP, pero con una ligera alteración.
if($_SERVER[‘HTTP_CLIENT_IP’] && strcasecmp($_SERVER[‘HTTP_CLIENT_IP’],»unknown»))
Utiliza la función STRCASECMP (que sirve para comparar cadenas de forma binaria, insensible a mayúsculas o minúsculas), para comparar la IP con unknown, esto en caso que la variable global devuelva unknown.
Ahora mis preguntas son, ¿esta demás agregar esa función al if?, ¿es común que la variable global $_SERVER devuelva unknown?
Gracias!
Tengo bastante tiempo leyendo tu blog, lo recomiendo ampliamente.
Publicado: 12/08/2009 12:47 am
Esto también sirve para protección de proxys, genial
Publicado: 16/08/2009 9:52 pm
Querido Unijimpe:
la verdad es un excelente blog y todo pero….
No se que paso prefería mas el anterior estilo del blog….
Publicado: 17/08/2009 3:20 pm
Querido Unijimpe:
tambien a mi me gustaba el estilo anterior del blog
porfavor cambialo ;)
Publicado: 03/10/2009 12:02 pm
Muchas gracias por la función, me ha ido muy útil
Publicado: 12/10/2009 11:45 am
Funciona muy bien. Gracias.
Publicado: 07/11/2009 6:52 pm
Gracias, esto está excelente ^^
Publicado: 11/11/2009 4:21 pm
[…] | Unijipe Categories: Internet, Programming Tags: address, code, get, ip, php, source Comments (0) […]
Publicado: 27/11/2010 11:21 am
como agrego o encuentro esa funcion que haces ? osea como lo llamo?
Publicado: 27/12/2010 4:51 pm
puedes usar:
print "Te conectas desde: ".getRealIP();
o también:
$ipcliente=getRealIP();
echo "Te conectas desde: ".$ipcliente;
Publicado: 03/02/2011 8:15 pm
Excelente, felicidades!!! :)
Publicado: 25/11/2011 11:24 am
Buenisimo este articulo… ahora me preguntaba lo siguiente : existe alguna forma en Javascript o en PHP de obtener la direccion fisica o MAC del computador ?
Publicado: 27/11/2011 6:52 pm
Como hago para saber la direccion MAC de una computadora que este accediendo a una pagina web?
Publicado: 30/01/2012 6:58 pm
como siempre en unijimpe los artículos BUENISIMOS, y este se pasa en bien explicado, pero lamentablemente debo reconocer que algunos tienen razon… PORFA VUELVAN AL DISEÑO ANTERIOR!!! ESTE SE VE EXTRAORDINARIAMENTE HORRENDO!!!!!!!!
disculpen la crueldad de mi comentario pero enserio que es FEO y con ganas de serlo!!
Publicado: 06/05/2012 12:11 am
Amigo Unijimpe:
Deberias de poner todo el codigo para descargar asi seria mas facil para TODOS.
Espero entiendas.
Saludos
Publicado: 05/06/2012 7:37 am
Muchas gracias pana
Publicado: 30/07/2012 12:27 pm
Yo para saber la ip, forme una clase foote.inc, y el la pagina llamo con un include….
si no llegan me pide el codigo que con gusto se lo dare….
Copyright ©©
| Política de Privacidad |
Disenado por: JRondon |
Publicado: 12/09/2012 9:27 am
Hay una manera de obtener el ip sin que este valor cambie cada vez que se apage el router
Publicado: 11/01/2013 12:40 pm
Amigo como hago para saber la region, estado y pais con ese php?
Publicado: 06/02/2013 4:55 pm
Muchas gracias, está todo muy bien explicado y funciona a la perfección,
Un saludo!
Publicado: 29/04/2013 9:25 pm
La informacion esta buenisima, pero no soy desarrollador o ing, de sistemas, por lo que es para mi chino. Si me puede colaborar con instrucciones mas simples. Lo necesito para ubicar una ip de una persona que le esta haciendo ciberbulling a traves del blog que creo en una tarea del colegio, agradezco su colaboracion.
Publicado: 10/06/2014 3:06 pm
muy buen blog, pero amigo hay una manera que yo pueda vaciladar si esa ip es interna o externa x ejemplo si es ip interna que le mande a google caso contrario q me envie a msn