Geolocalización por paises con PHP.

La Geolocalización (referido a un entorno web) es la detección del área geográfica de la que procede una consulta o visita web. Determinar el área de procedencia de un visitante web, es algo muy interesante, de cara a la correcta explotación de una web. Permite mostrar contenido o ejecutar diferentes acciones (por ejemplo mostrar un determinado idioma de página, o publicidad relacionada), en función de esta área geográfica.

La geolocalización tiene diferentes grados de precisión, en función de las herramientas y técnicas utilizadas para su detección. Podemos abarcar geolocalización por continentes, por paises, por zonas geográficas clasificadas, o incluso llegar hasta ajustes muy finos, como la detección de la ciudad de procedencia.

En este tutorial me voy a centrar en la geolocalización por paises, que quizás sea la mas utilizada en aplicaciones web.

 

geolocalizacion

 

La geolocalización es un termino, ampliamente extendido en los últimos años, a todos los niveles. Como ya decía abarca muchos niveles, pero en este tutorial, me centraré en la localización por paises para sitios web. La mayoría de sitios web, de tamaño pequeño o mediano pueden obtener grandes beneficios al aplicar esta técnica. Por ejemplo, para un sitio como redribera, donde nuestros lectores y visitantes, proceden del entorno de paises conformado por Latinoamérica y España, es interesante poder segmentar el contenido mostrado en función del pais de procedencia de la visita.

Entre algunas de las aplicaciones que nos permite la geolocalización, están:

  • La detección del pais de procedencia en tiempo real.
  • Analisis de logs en el servidor web.
  • Creación de contenido en funcion del origen, como idioma, moneda....
  • Detección de fraudes por tarjeta de crédito o similar.
  • Campañas online, como Banners segmentados
  • Derechos digitales, para música, películas en función de las leyes del pais de origen.
  • Detección automática del pais para la precarga de formularios (moneda, pais origen, hora actual....)
  • Filtrado de accesos por paises.
  • Filtro anti-SPAM por paises de procedencia

y utilizando tu imaginación seguro que aumentas esta lista considerablemente.

Veamos como implementar técnicamente un sistema de geolocalización para uno de los entornos mas populares de servidor, PHP.

 

Herramientas disponibles para geolocalización.

Existe una enorme variedad de herramientas para detectar la zona de procedencia de una visita. Una de las herramientas mas ampliamente utilizadas son las API de Google para geolocalización. Estas API's están basadas en JavaScript. Así que su utilización está condicionada a ejecutarse en el lado del cliente y requiere tener activado JavaScript en el navegador. Aunque mediante el uso de AJAX, se pueden obtener resultados de presentación de contenido en función de la localización, de forma correcta. Sin embargo esta implementación es mas laboriosa. No obstante una de las ventajas que aportan las API de google, para localización, es su grado de zoom, puediendo obtener resultado muy finos, y además con un porcentaje de error mínimo. La API de google es gratuita, así que es una buena opción de geolocalización.

 

Por otro lado están las aplicaciones que trabajan del lado del servidor, y que habitualmente se apoyan en la detección del origen de la consulta mediante el uso de "referers", habitualmente la IP pública de origen. Una vez detectada la IP de procedencia se relaciona con una base de datos de IP-pais, con la que se determina la procedencia. Estas bases de datos, normalmente soportan un grado de zoom diverso, siendo lo mas habitual la detección del pais de origen, por el propio coste de consulta a la base de datos. Existen varias bases de datos , actualizadas continuamente de pago, pero también existen bases de datos gratuitas.

En este tutorial nos vamos a apoyar en la base de datos gratuita que suministran en http://software77.net/geo-ip/ . Se trata de una base de datos (en formato csv), que se actualiza casi que a diario, y que contiene datos de IP / pais, bastante acertados (teniendo en cuenta, que los rangos de IP, pueden variar en el tiempo). Se pueden utilizar otras bases de datos, pero yo comentaré esta, porque es la que utilizo y como vereís mas adelante me ha sido muy sencillo manipularla con PHP, sin siquiera la necesidad de apoyarse en una base de datos del lado del servidor, tan solo utilizando PHP.

 

Siguiente página »