viernes, 20 de febrero de 2015

Detectar país y establecer zona horaria en PHP




En ocasiones nos encontramos que tenemos una web con varios lenguajes para distintos países y/o que la hora del servidor no coincide con el uso horario del país donde nos encontramos.

En este caso, podemos definir el uso horario que utilizará nuestro sitio, prevaleciendo sobre el definido en el servidor.

La función a utilizar es date_default_timezone_set. Su uso es muy sencillo:

<?php
//El servidor tiene configurada la hora local de España
echo date("d-m-Y H:i:s")."<br>";
date_default_timezone_set("Mexico/General");
echo date("d-m-Y H:i:s");
?>

nos devuelve:

19-02-2015 18:19:51
19-02-2015 11:19:51

Podemos ver todos los timezone en php.net (http://php.net/manual/es/timezones.php).

Obtener datos de geolocalización del usuario

Para obtener los datos de geolocalización del usuario que visita nuestra web, utilizaremos la función   geoip_country_code3_by_name

<?php
$nato= geoip_country_code3_by_name($_SERVER['REMOTE_ADDR']);
echo "Código Nato: $nato";
?>

En este caso devolvería: 

Código Nato: ESP

Lo que nos devuelve el código NATO de la localización física del usuario. En función de este código de país NATO (abreviatura inequívoca de tres caracteres identificativa de cada país).

Podéis encontrar la relación completa de códigos de países NATO en:



Obteniendo el código NATO del usuario, podemos relacionarlo de manera sencilla con su timezone y así personalizar el uso horario de nuestra web en función de la geolocalización de nuestros usuarios.




No hay comentarios:

Publicar un comentario