10 mayo, 2012

Ubicación de las visitas a tu sitio desde un API en PHP


Siempre vas a necesitar conocer la ubicación de tus visitas, y si no, deberías, ya sea para mantener datos de visitas (aunque si sólo utilizas Google Analytics, no deberías preocuparte) ó para restringir un acceso a un registro o algún otro permiso, pero como obtienes este dato?

Pues hay un API que nos facilita conocer el país, región e incluso la ciudad de una visita solo ingresando la IP de donde nos accede. Desde ahora les aclaro que utilizar servicios de terceros nos deja a sus pies, y no es recomendado si no conoces la fuente o no confías en él, por unas semanas yo he utilizado este y hasta ahora no me ha fallado en lo que necesito.

El servicio se accede mediante la siguiente dirección: http://api.easyjquery.com/ips/?full=true si ingresas al enlace puedes ver tus datos, y reconocemos que nos retorna los datos en una estructura json (si no sabes que es json no te preocupes puedes leer de eso aquí). Pero lo que queremos es obtener los datos del usuario y no los podemos obligar a ingresar al link, para esto vamos a utilizar la función de PHP llamada file_get_contents que va a ingresar a esa dirección por nosotros y retornarnos esa información del usuario, de esta manera:

$ip = $_SERVER['REMOTE_ADDR'];
$json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
La variable ip es el valor de la IP del visitante que viene dentro del arreglo $_SERVER propio de php, ahora vienen la pregunta:

¿Cada ves que un usuario venga al sitio vamos a usar nuestro script para sacar los datos?
No, al menos lo ideal sería no hacerlo todo el tiempo, puesto que el request a una pagina aparte lleva su tiempo al servidor.
 ¿Pero entonces qué hacemos? Necesitamos almacenar los resultados ya consultados, podemos hacerlo de dos maneras:
  • Almacenarlos en una base de datos.
  • Almacenarlos en un directorio.
Almacenarlos en una base de datos sería lo más fácil, por eso vamos a tomar un método menos común y los vamos a guardar en una carpeta como archivos individuales:
$file = $_SERVER['DOCUMENT_ROOT']."/ip_cache/".$ip;
if(!file_exists($file)){ // request
 $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
 $f = fopen($file,"w+");
 fwrite($f,$json);
 fclose($f);
}else
 $json = file_get_contents($file);
 De esta manera estaremos guardando únicamente archivos llamados como la IP e insertándoles el json directamente, de manera tal que al correr el script primero verificará si el archivo existe (si esta ip ya ha utilizado el script) si existe recogerá los datos del archivo, sino, verificara mediante el API y creará el archivo, una ÚNICA vez.

Así tendremos una forma ágil y rápida de verificar de donde proviene nuestro usuario, en síntesis el script se debe de ver de esta manera:
function get_country(){
    $ip = $_SERVER['REMOTE_ADDR'];
    $file = $_SERVER['DOCUMENT_ROOT']."/ip_cache/".$ip;
    if(!file_exists($file)) {// request
        $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");
        $f = fopen($file,"w+");
        fwrite($f,$json);
        fclose($f);
    }else
        $json = file_get_contents($file);
    $json = json_decode($json,true);
    return $json['COUNTRY'];
}
Si necesitan ver todos los datos que retorna en json, pueden hacerle un var_dump() a la variable $json o bien un print_r(). Espero que les haya parecido funcional el script, hasta la próxima.
Si te gustó este aporte y quieres seguir recibiendo temas como este suscríbete a JeankGeek.

08 mayo, 2012

Rastrear tus paquetes con Mapas

Bueno antes de entrar en materia de programación, les traigo un enlace muy práctico para poder rastrear sus paquetes, ya sea que se manden a traer cositas de Amazon o cualquier otra tienda del extranjero. La mayoría de veces lo que podemos ver en paginas como UPS o Fedex es la provincia donde esta el paquete, pero lo que queremos ver es ¿Por donde viene? para esto lo más práctico es un mapa que te muestre punto por punto, y el sitio de packagemapping tiene esto y más, por ejemplo no es necesario que ingreses el proveedor (USPS, UPS, FEDEX, ect..) la pagina se encarga sola de decodificar el codigo de tracking y te muestra en dos columnas los datos que necesitas, en la primera a la izquierda fechas, horas y estimados, en la derecha el tan buscado mapa de google, que - seamos honestos - se puede mejorar, pero aún esta muy bien, de verdad yo quedé muy feliz de encontrar un servicio como este, espero que a ustedes también les sea útil.
Si te gustó este aporte y quieres seguir recibiendo temas como este suscríbete a JeankGeek.

Desempolvando el Blog

Hola a todos, desempolvando un poco mi cuenta de Gmail me di cuenta que aún tenia este blog, y he decidido seguir actualizandolo con cositas un poco más avanzadas de PHP, cosas que vaya aprendiendo o que ya haya aprendido. Así que a todos aquellos que lean o hayan leido el blog, preparense para seguir el blog, que pronto espero aprendan nuevas cosas!! Salu2!!
Si te gustó este aporte suscríbete a JeankGeek si te interesa seguir recibiendo temas como este.