> Manuales > Taller de PHP

Script para conocer el país del visitante de tu página web en php.

Una de las grandes necesidades de todo desarrollador web radica al momento de conocer el país del visitante bien sea para redireccionarlos a módulos o páginas con particularidades o características propias de cada determinación, entre otras funciones que se pueden desarrollar en el entorno.

Ejemplo: Si tenemos una página de productos y catálogos (Comercio Web) y deseamos mostrare al visitante el precio del referido producto o artículo expresado monetariamente en su moneda local.

Entre otras infinidades de particularidades.

En realidad el proceso de la detección del país a través del nick se realiza a partir de la dirección IP devuelta por superglobales como $_SERVE['REMOTE_ADDR'], tomando como soporte o base una serie criterios de posibilidades almacenados lógicamente en archivos de base de datos, para su posterior validación y deducción de sus cuatros componentes esenciales menores todos a 255.

En Php solo existen alguna funciones que permiten obtener información acerca de maquinas conectadas a una red especifica por medio de las Funciones de Red, pero no creamos que una función o un par de funciones nos harán todo el trabajo; por el contrario solo serán bases para todo el ensamblaje.

Ciertamente la empresa Maxmind, desarrolladora por excelencia de este tipo de herramientas con soporte para diferentes tecnologías “GeoIp”, logro solucionar este gran problema con un 95% de efectividad con un conjunto de funciones y un archivo de bases de datos.

Para poder utilizar esta herramienta deberemos descargar la base de datos:
GeoIP.dat.gz

Biblioteca de vínculos y funciones:
Geoip.inc

Fianlemente realizaremos un test con las siguientes lineas:

<?
require("geoip.inc"); /*requerimos la biblioteca o liberia */
$abir_bd = geoip_open("GeoIP.dat",GEOIP_STANDARD); /* apertura y lectura del archivo utilizando la constante GEOIP_STANDARD como forma de lectura que adquiere valor en geoip.inc */
/* imprimimos el nick del país */
echo geoip_country_name_by_addr($abir_bd, $_SERVER['REMOTE_ADDR']);
/* liberamos memoria cerrando el resorce devuelto por $abir_bd de la apertura*/
geoip_close($abir_bd);
?>


Desventajas y Sugerencias:

Seria un gravísimo error que incluyeramos estas lineas en todas nuestra páginas, recordemos que cada vez que esta se carge llamara a si mismo el archivo geoip.inc y GeoIP.dat, este ultimo supera los 700 Kb de tamaño y puede considerablemente extender el tiempo de carga de la página.

Sugerencias:
Podemos almacenar el valor del nick o código del país en una session ($_SESSION) preferiblemente, o en su defecto en COOKIES; para que de este modo solo se lea una vez ya que lógicamente el visitante no cambiara de IP a cada vez que refresque o navegue en una página.

Emmanuel García De Caro

Webmaster de Blasten.com

Manual