A
Alan98
Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
<?php
/*
*
* Script de geolocalización
* @author Alan98 (http://forobeta.com/member.php?u=35459)
*
*/
// Primero obtenemos la IP real del visitante
$realip = (!empty($_SERVER['HTTP_CF_CONNECTING_IP']) ? $_SERVER['HTTP_CF_CONNECTING_IP'] : (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']));
// Comprobamos si está disponible cURL, que es más rápido que file_get_contents
if(function_exists('curl_init')){
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9) Gecko/2008052906 Firefox/3.0');
curl_setopt($ch, CURLOPT_URL, 'http://api.codehelper.io/ips/?php&ip='.$realip);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
} else {
$data = file_get_contents('http://api.codehelper.io/ips/?php&ip='.$realip);
}
// Parseamos la respuesta JSON
$data = json_decode($data, 1);
// Imprimimos la información al cliente
echo 'Tu país: <b>',$data['CountryName'],'</b>, tu código de país: <b>',$data['Country'],'</b>, tu región: <b>',$data['RegionName'],'</b>, tu ciudad: <b>',$data['CityName'],'</b>.';
// Países disponibles
$ava = array('AR', 'MX', 'ES');
// En caso de estar entre el array, realizamos redirección
if(in_array($data['Country'], $ava)) die(header('Location: http://tuweb.com/'.strtolower($data['Country'])));
require 'geoip.php';
Gracias buen aporte, solo es cuestión de creatividad para que de resultado de imagen mostrando la bandera.
echo 'Tu país: <b>',$data['CountryName'],'</b> <img src="http://geoiptool.com/flags/',strtolower($data['Country']),'.gif" />, tu código de país: <b>',$data['Country'],'</b>, tu región: <b>',$data['RegionName'],'</b>, tu ciudad: <b>',$data['CityName'],'</b>.';
El demo me manda a otro lado 😕 pero igual buen aporte.
Son correctos :encouragement:Donde puedo ver la lista de los códigos de países? Necesito hacer un condicional y no sé si la lista de los códigos de países será la misma.
- AR = Argentina?
- MX = México?
- UY = Uruguay?
- CL = Chile?
- PA = Panamá?
- EC = Ecuador?
Podrías confirmarme si esta bien?
Aún así voy a intentar, ya que me haz salvado de una muy grande jeje :encouragement:
if($data['Country'] === 'AR') { *do* }
Donde puedo ver la lista de los códigos de países? Necesito hacer un condicional y no sé si la lista de los códigos de países será la misma.
- AR = Argentina?
- MX = México?
- UY = Uruguay?
- CL = Chile?
- PA = Panamá?
- EC = Ecuador?
Podrías confirmarme si esta bien?
Aún así voy a intentar, ya que me haz salvado de una muy grande jeje :encouragement:
Conoces Google?
Let me google that for you
----------------------------
Muy bueno el tutorial, pero igual me sale una ciudad diferente.
Conoces Google?
Let me google that for you
----------------------------
Muy bueno el tutorial, pero igual me sale una ciudad diferente.
En septiembre publiqué una respuesta donde también se utilizaba ese sitio para lo mismo, y por lo visto aún sigue funcionando. Hay un enlace en la respuesta donde se puede ver las diferentes formas de utilizar la API (JavaScript, PHP, etc). Es algo sencillo y fácil de hacer, pero cada cual lo puede hacer a su manera.Es necesario depender del sitio codehelper.io?
Recuerdo hace tiempo que existía una base de datos en la que se comparaban las IP, y obtenías estos datos sin tener que recurrir a peticiones de sitios con dudosa reputación (Con su respectivo Overhead).
Lo de las ciudades nunca es 100% correcto, varía según el proveedor de servicios, creo que ni el geolocalizador del mismo google detecta la ciudad correctamente en todos los proveedores 😕
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?
Utilizamos cookies y tecnologías similares para los siguientes fines:
¿Aceptas las cookies y estas tecnologías?