Contenido

Geolocalización gratis con PHP

14 abr

+ 13

Hace unos días que se viene hablando de iplocationtools, una aplicación gratuita que nos permite obtener datos sobre la geolocalización de una IP(en mi caso me ha ubicado en otro pais… así que no me fio mucho).

Inicialmente la aplicación está pensada para devolvernos los datos mediante una petición GET, así que unas pocas líneas de código podrían mostrarnos una serie de datos muy interesantes de nuestros usuarios.


<?php
    function get_ip_location($ip, $format="xml") {
        $formats_allowed = array("json", "xml", "raw");
        $query_url = "http://iplocationtools.com/ip_query.php?ip=";
        if(!in_array($format, $formats_allowed)) {
            $format = "xml";
        }
        $query_url = $query_url . "{$ip}&output={$format}";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $query_url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_TIMEOUT, 15);
        return curl_exec($ch);
    }
?>

Modo de empleo

Este script, nos permite obtener los datos en 3 formatos diferentes, dependiendo del valor que le pasemos como segundo parámetro a la función get_ip_location().

// XML
  $location_data = get_ip_location("209.85.153.104");
  print_r($location_data);
// Respuesta
<Response>
	<Ip>209.85.153.104</Ip>
	<Status>OK</Status>
	<CountryCode>US</CountryCode>
	<CountryName>United States</CountryName>
	<RegionCode>06</RegionCode>
	<RegionName>California</RegionName>
	<City>Mountain View</City>
	<ZipPostalCode>94043</ZipPostalCode>
	<Latitude>37.4192</Latitude>
	<Longitude>-122.057</Longitude>
</Response>

//JSON
  $location_data = get_ip_location("209.85.153.104", "json");
  print_r($location_data);
//Respuesta
{
	"Ip" : "209.85.153.104",
	"Status" : "OK",
	"CountryCode" : "US",
	"CountryName" : "United States",
	"RegionCode" : "06",
	"RegionName" : "California",
	"City" : "Mountain View",
	"ZipPostalCode" : "94043",
	"Latitude" : "37.4192",
	"Longitude" : "-122.057",
}

// RAW
  $location_data = get_ip_location("209.85.153.104", "raw");
  print_r($location_data);
// Respuesta
  209.85.153.104,OK,US,United States,06,California,Mountain View,94043,37.4192,-122.057

[Descargar]

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.