IP Location Tools

IP Location Tools es un servicio gratuito que te devolverá la posición, la ciudad, región y país de un determinado número IP. Este servicio ofrece dos versiones para consultar esta información: una base de datos SQL para descargar y un API para consultar directamente.

iplocationtools

Utilizando el API de IP Location Tools
En nuestra caso utilizaremos el API para no estar instalando la base de datos, entonces para acceder a la información requerida es necesario acceder a un URL de la forma:

  1. http://iplocationtools.com/ip_query.php?ip=74.125.45.100

Esto nos devolverá un XML conteniendo el IP consultado, el estado de la consulta, los datos de pais, región, ciudad incluso los valores de latitud y longitud de posición del IP consultado.

  1. <?xml version=«1.0» encoding=«UTF-8»?>
  2. <Response>
  3. <Ip>200.121.243.199</Ip>
  4. <Status>OK</Status>
  5. <CountryCode>PE</CountryCode>
  6. <CountryName>Peru</CountryName>
  7. <RegionCode>15</RegionCode>
  8. <RegionName>Lima</RegionName>
  9. <City>Lima</City>
  10. <ZipPostalCode></ZipPostalCode>
  11. <Latitude>-12.05</Latitude>
  12. <Longitude>-77.05</Longitude>
  13. </Response>


Utilizando PHP

Como el resultado es un XML podríamos utilizar la función xml2array de la cual comentamos en xml2array: PHP XML Parser, entonces tendríamos el siguiente código para leer los datos del XML.

  1. include(«xml2array.php»);
  2. $ipquery = $_SERVER[‘REMOTE_ADDR’];
  3. $pathAPI = «http://www.iplocationtools.com/ip_query.php?ip=».$ipquery.«&output=xml»;
  4. $xmldata = file_get_contents($pathAPI);
  5. $arrdata = xml2array($xmldata);
  6. $params = $arrdata[‘Response’];

Donde notamos que tomamos el IP del visitante para hacer la consulta, luego de ello imprimimos estos datos en nuestro HTML como se muestra:

  1. <strong>IP:</strong>
  2. <?php echo $params[‘Ip’][‘value’]; ?><br />
  3. <strong>País:</strong>
  4. <?php echo $params[‘CountryName’][‘value’]; ?><br />
  5. <strong>Región:</strong>
  6. <?php echo $params[‘RegionName’][‘value’]; ?><br />
  7. <strong>Ciudad:</strong>
  8. <?php echo $params[‘City’][‘value’]; ?><br /><br />
  9. <strong>Latitud:</strong>
  10. <?php echo $params[‘Latitude’][‘value’]; ?><br />
  11. <strong>Longitud:</strong>
  12. <?php echo $params[‘Longitude’][‘value’]; ?>

El resultado de este ejemplo lo podemos ver funcionando en iplocation.

maplocation

Integrando los resultados con Google Maps
Podríamos mejorar aun mas nuestro ejemplo si mostramos los resultados de la búsqueda en un mapa, para ello basados en el ejemplo Google Maps en tu Web creamos una instancia de nuestro mapa centrado en la latitud y longitud recién obtenidas, ademas de ello posicionamos un campo de texto con los datos de la consulta.

  1. <title>IP Location Demo – unijimpe</title>
  2. <script type=«text/javascript»
  3. src=«http://maps.google.com/maps?file=api&amp;v=2&amp;key=TU_KEY»></script>
  4. <script type=«text/javascript»>
  5. //<![CDATA[
  6. function load() {
  7. if (GBrowserIsCompatible()) {
  8. var map = new GMap2(document.getElementById(«map»));
  9. var pos = new GLatLng(<?php echo $params[‘Latitude’][‘value’]; ?>,<?php echo $params[‘Longitude’][‘value’]; ?>)
  10. map.setCenter(pos, 12);
  11. map.addOverlay(new GMarker(pos));
  12. var myHtml = «<strong>IP:</strong> <?php echo $params[‘Ip’][‘value’]; ?><br /><strong>Ubicación:</strong> <?php echo $params[‘City’][‘value’].» – «.$params[‘CountryName’][‘value’]; ?>«;
  13. map.openInfoWindow(pos, myHtml);
  14. }
  15. }
  16. //]]>
  17. </script>
  18. </head>
  19. <body onload=«load()» onunload=«GUnload()»>
  20. <h3>IP Location Demo</h3>
  21. <div id=«map» style=«width:500px; height:300px»></div>
  22. </body>
  23. </html>

El resultado de este ejemplo lo puedes ver en maplocation.php en donde se muestran los datos de la consulta sobre el mapa. Finalmente les dejo los archivos fuente de este post para que hagan sus pruebas y lo utilicen en sus webs.

Entradas Relacionadas:

If you enjoyed this post, make sure you subscribe to my RSS feed!
Catergorias: Scripts
Tags: , , ,

Si te gusto esta entrada, puedes dejar un comentario o subscribirte a nuestro feed y recibir futuras entradas en tu lector de feeds.