Para detectar el país de un usuario mediante su dirección IP, utiliza este código en PHP:
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$url = "http://api.wipmania.com/".$ip;
$country = file_get_contents($url);
echo $country;
La variable $country será el país del usuario, en código ISO. Descarga aquí la lista completa de países y sus códigos ISO en Excel. Mediante tu dirección IP, sabemos que...
Hola, primero deseo darles las gracias por el articulo. me funciona 99% bien. el resultado que me da es el CU en este caso pero el nombre del país Cuba. tengo que hacer algo para que me muestre el nombre y no las iniciales. saludos Chinea
Hola Chinea. En este caso, lo único que se me ocurre es que utilices un condicional en PHP, de modo que si el nombre por mostrar es \"CU\", lo sustituyas por \"Cuba\".
Buenas noches, tengo una página web hecha en español e inglés, (las dos por separado, cada una con su índex y carpetas de recursos) y quiero que cuando el internauta se meta en el dominio se muestre solamente una se ellas según el idioma del país en qué está. Cómo lo puedo hacer?
Hola. Si usas PHP, mi solución sería crear un array de países de habla hispana con código ISO. Ej. $array = Array(\"ES\", \"VE\", \"CO\", etc.) Mediante in_array, localizas si el ISO del país del usuario está en ese array. En ese caso, diriges al sitio en español; si no, al sitio en inglés.
Hola, gracias por el aporte. Cuando pruebo el script en accediendo desde una dirección segura siempre me muestra US, y yo estoy en Argentina (AR). Este script no funciona para direcciones del tipo: https://www.tarjetasencantos.com.ar