Ricardo, uno de nuestros lectores nos preguntaba como puede detectar de que zona o país provienen sus lectores y necesita hacerlo con PHP. Tenía en mente una manera de desarrollarlo algo más largo y menos práctico que la que veremos hoy. Me puse a investigar rápidamente y encotré un muy buen ejemplo escrito por Francisco en su Blog, como soy partidario de no reinventar la rueda y su código me pareció más sencillo que el mío, así que veremos el suyo
A explicar un poco lo que hace el código, como los países tienen asignados rangos de IP que se van distribuyendo a las ISP entonces es relativamente sencillo este proceso. Lo primero que hacemos es obtener el la IP del visitante y luego utilizamos uno de los servicios de WebHosting.info, quien nos devolverá las 2 letras asignadas a las URL por paises, ejemplo:
- Paraguay: py
- Chile: cl
- España: es
- Mexico: mx
- Rusia: ru
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | //Obtener IP: $_SERVER["HTTP_CLIENT_IP"]!=""?$ip=$_SERVER["HTTP_CLIENT_IP"]: $ip=$_SERVER["REMOTE_ADDR"]; //Función de obtención de IP (basado en la web de webhosting.info) function getCountry($ip_address){ //By Marc Palau (http://www.nbsp.es) $url = "http://ip-to-country.webhosting.info/node/view/36"; $inici = "src=/flag/?type=2&cc2="; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST,"POST"); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "ip_address=$ip_address"); ob_start(); curl_exec($ch); curl_close($ch); $cache = ob_get_contents(); ob_end_clean(); $resto = strstr($cache,$inici); $pais = substr($resto,strlen($inici),2); return $pais; } //obtención de código de país: $pais = strtolower(getCountry($ip)); |
Lo que correrá por nuestra cuenta es almacenar en algún lugar (base de datos, fichero de texto o algun otro lugar) la lista de países con sus zonas para luego comparar y reaccionar contra él. Si queremos crear zonas agregamos un nivel más de relación de los países por zonas como nos guste o convenga organizar los países.
Si quieren mostrar al usuario su origen, con una bandera pueden crear la estructura y tener almacenadas las imágenes para cruzar las referencias y dejar todo enchulado
Lo he probado aquí en devtroce y funciona el código, espero sepan darle buen uso y éxito con sus sitios
Articulos Relacionados:









en
en
en
en
Sin Comentarios aun, puedes tú ser el primero en comentar!
Deja tu Comentario