Cristalab

                 ¿Quieres registrarte?

Detectar país de visitantes a nuestra web con PHP

Por: XrV
1 de Diciembre del 2006
52 de clabLevel
Otros artículos de XrV
18,728 visitas
php

Os dejo de regalo una función en PHP para saber el país de origen de vuestras visitas. Solo necesitáis pasar como argumento la IP del mismo. Tiene mucha utilidad en todo tipo de estadísticas de marketing, para saber que segmentos de nuestras paginas son más visitados por que países o lo que sea.

Código :

//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));

Espero que os sea de ayuda ;)


Artículos Relacionados


Etiquetas php

Comentarios | Enviar un comentario
Qué bueno! El único riesgo es si chapa ip-to-country algún día no? jeje. Saludos
Por: Capt.Mahou_blog
<voz del Sr Burns moviendo los dedos>
Excelenteee...
</voz del Sr Burns moviendo los dedos>

Aparte de ayudar de estadisticas de Marketing, puede servir para cambiar el idioma del visitante de acuerdo al pais ^^
Por: Max
En GeoIP te proporcionan una base de datos actualizada de las IP's que correcponden a cada país.
Ellos te proporcionan una API en varios lenguajes (incluido PHP) para acceder a la base de datos.
Te dan dos modos de acceso, uno sencillo a través de un .dat de casi 1Mb que se parsea cada vez que accedes a la página (esto es tela de lento) o a través de un CSV a cargar a una base de datos.
Prefiero el segundo, aunque hay que actualizar la base de datos periódicamente y resulta más tedioso en esta segunda forma.

Por cierto, hay que tener en cuenta las formas de determinar la ip si el visitante está tras un proxy.

Un saludo.
Por: Pachi

Capt.Mahou_blog :

Qué bueno! El único riesgo es si chapa ip-to-country algún día no? jeje. Saludos


En el sitio ofrecen el csv, o puedes hacer lo que dice pachi
Por: Dientuki
<?
if ($_SERVER) {
if ( $_SERVER[HTTP_X_FORWARDED_FOR] ) {
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} elseif ( $_SERVER["HTTP_CLIENT_IP"] ) {
$realip = $_SERVER["HTTP_CLIENT_IP"];
} else {
$realip = $_SERVER["REMOTE_ADDR"];
}
} else {
if ( getenv( "HTTP_X_FORWARDED_FOR" ) ) {
$realip = getenv( "HTTP_X_FORWARDED_FOR" );
} elseif ( getenv( "HTTP_CLIENT_IP" ) ) {
$realip = getenv( "HTTP_CLIENT_IP" );
} else {
$realip = getenv( "REMOTE_ADDR" );
}
}
?>


Este script me ayuda a evitar los proxis ... bye
Por: Dario Godoy darigodoy@ho
Hola a todos.

Estoy intentando insertar el código en mi web pero no se bien cómo hacerlo (al código le faltan las etiquetas de inicio y cierre de "php")

¿Cómo puedo insertar este código en mi web? ¿Me puede ayudar alguien?

Gracias.
Por: abel_dg_blog
Hay IPs cuyas procedencias no las detecta. Por ejemplo 190.172.2.34, que es de Argentina...
Me parece que hay que optar por otra base.
gracias igual.-
Por: Lic. Solomeo Paredes_blog
Deja un comentario
IMPORTANTE

Este mensaje ha sido cerrado; si deseas participar en la discusión o hablar de otro tema relacionado, hazlo en los foros de Cristalab