Foros del Web » Programando para Internet » PHP »

[APORTE] ver de que Pais es la persona que me visita

Estas en el tema de [APORTE] ver de que Pais es la persona que me visita en el foro de PHP en Foros del Web. Espero que les sea útil. Este es el codigo que yo uso para ver de que Pais proviene la persona que esta accediendo a mi ...

  #1 (permalink)  
Antiguo 11/06/2009, 15:06
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
[APORTE] ver de que Pais es la persona que me visita

Espero que les sea útil. Este es el codigo que yo uso para ver de que Pais proviene la persona que esta accediendo a mi página web.

Primero tienen que bajar el texto donde se encuentra toda la informacion de los paises

http://ip-to-country.webhosting.info/node/view/6

vas a darle un click al link que dice
Download the latest IP-to-Country Database (Last updated on June 03 2009)
Aquí esta el link directo para bajar el archivo http://ip-to-country.webhosting.info...ountry.csv.zip

Ese archivo lo actualizan una vez cada mes aproximadamente. A veces más tiempo.

Luego usas una funcion que te permite comparar el codigo con el ip de la persona. Aqui les indico el que yo uso, pero el unico problema es que tienes que cambiar 1 cosa del archivo que bajes de ip-to-country.webhosting.info

1. algunos lugares salen al final con
, U.S.
y debes quitarle la coma a esa parte, lo que tienes que hacer es un replace para que salga solamente
U.S.
Nota: Puede que en la ultima actualización que este en el momento hayan quitado esta parte del texto.

Ok este es el codigo que yo uso

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * This class generates the country name and its flag from its IP address
  4.  *
  5.  *
  6.  * @author Rochak Chauhan
  7.  */
  8. class CountryFromIP {
  9.  
  10.     private $CountryIPDatabase = 'CountryIPDatabase.txt';
  11.     private $ip = '';
  12.  
  13.     /**
  14.      * Function to validate IP ( please modify it according to your needs)
  15.      *
  16.      * @param $ip - string
  17.      *
  18.      * @return boolean
  19.      */
  20.     public function ValdateIP($ip) {
  21.         $ipArray = explode(',',$ip);
  22.  
  23.         if(count($ipArray) != 4) {
  24.             echo "<font color='red' size='3'> <b>ERROR: </b> Invalid IP</font>";
  25.             return false;
  26.         }
  27.         else {
  28.             return true;
  29.         }
  30.     }
  31.  
  32.     /**
  33.      * Function to return Country name from the IPDatabase
  34.      *
  35.      * @param $ip string
  36.      *
  37.      * @return string - name of the country, false otherwise
  38.      */
  39.     public function GetCountryName($ip) {
  40.         $this->ip = $ip;
  41.         $ip = sprintf("%u", ip2long($ip));
  42.  
  43.         $csvArray = file($this->CountryIPDatabase);
  44.  
  45.         for($i=0; $i<count($csvArray); $i++){
  46.             $setCsv = str_replace("\"", "", $csvArray[$i]);
  47.             $arrayOfLine = explode(',', $setCsv);
  48.             if($ip >= $arrayOfLine[0] && $ip <= $arrayOfLine[1] ) {
  49.                 return $countryName = $arrayOfLine[4];
  50.             }
  51.         }
  52.         return false;
  53.     }
  54.  
  55.     /**
  56.      *  Function to return local path to Country's flag
  57.      *
  58.      * @param $ip - string
  59.      *
  60.      * @return string - local path to flag image
  61.      */
  62.     public function ReturnFlagPath() {
  63.  
  64.         if($countryName = trim(ucwords(strtolower($this->GetCountryName($this->ip))) )) {
  65.             $countryName = str_replace(' ','%20',$countryName);
  66.             return "flag/$countryName.gif";
  67.         }
  68.         else {
  69.             return false;
  70.         }
  71.     }
  72.  
  73. }
  74.  
  75. $ip = $_SERVER["REMOTE_ADDR"];
  76.  
  77. $object = new CountryFromIP();
  78.  
  79. $countryName =  $object->GetCountryName($ip);
  80. $flagPath =  $object->ReturnFlagPath();

Aqui vas a indicar donde se encuentra el archivo que bajaste yo le cambie el nombre a esto
private $CountryIPDatabase = 'CountryIPDatabase.txt';
pero puedes dejarle el nombre como sale originalmente, y con la extension .csv.

Lo unico que tienes que hacer para saber de que pais viene es escribir
echo $countryName;

Para que te funcione $flagPath tendrias que bajar todas las banderas y aqui estan
http://rapidshare.com/files/311065106/flag.zip

Última edición por abimaelrc; 23/11/2009 a las 07:51
  #2 (permalink)  
Antiguo 22/11/2009, 18:58
 
Fecha de Ingreso: septiembre-2009
Mensajes: 306
Antigüedad: 15 años, 3 meses
Puntos: 10
Respuesta: [APORTE] ver de que Pais es la persona que me visita

esto es precisamente lo q estaba buscando, pero no logro q me funcione. pongo exactamente este codigo
Código PHP:
<?php

      
/**
       * This class generates the country name and its flag from its IP address
       *
       *
       * @author Rochak Chauhan
       */
      
class CountryFromIP {
       
          private 
$CountryIPDatabase 'CountryIPDatabase.csv';
          private 
$ip '';
          
/**
           * Function to validate IP ( please modify it according to your needs)
           *
           * @param $ip - string
           *
           * @return boolean
           */
          
public function ValdateIP($ip) {
              
$ipArray explode(',',$ip);
       
              if(
count($ipArray) != 4) {
                  echo 
"<font color='red' size='3'> <b>ERROR: </b> Invalid IP</font>";
                  return 
false;
              }
              else {
                  return 
true;
              }
          }
       
          
/**
           * Function to return Country name from the IPDatabase
           *
           * @param $ip string
           *
           * @return string - name of the country, false otherwise
           */
          
public function GetCountryName($ip) {
              
$this->ip $ip;
              
$ip sprintf("%u"ip2long($ip));
       
              
$csvArray file($this->CountryIPDatabase);
       
              for(
$i=0$i<count($csvArray); $i++){
                  
$setCsv str_replace("\""""$csvArray[$i]);
                  
$arrayOfLine explode(','$setCsv);
                  if(
$ip >= $arrayOfLine[0] && $ip <= $arrayOfLine[1] ) {
                      return 
$countryName $arrayOfLine[4];
                  }
              }
              return 
false;
          }
       
          
/**
           *  Function to return local path to Country's flag
           *
           * @param $ip - string
           *
           * @return string - local path to flag image
           */
          
public function ReturnFlagPath() {
       
              if(
$countryName trim(ucwords(strtolower($this->GetCountryName($this->ip))) )) {
                  
$countryName str_replace(' ','%20',$countryName);
                  return 
"flag/$countryName.gif";
              }
              else {
                  return 
false;
              }
          }
       
      }
      
$ip $_SERVER["REMOTE_ADDR"];
      
$object = new CountryFromIP();
      
$countryName =  $object->GetCountryName($ip);
      
$flagPath =  $object->ReturnFlagPath();?>
y hasta abajo pongo
Código PHP:
<?php echo "Pais: " $countryName?>
pero no aparece nada despues de "Pais: "; el archivo .csv lo tengo en el mismo directorio.. que es lo que estoy haciendo mal?

----Editado----


ya lo solucine, mi error era q el nombre del archivo .csv no era el mismo.


soy un poco nuevo en el oop y quisiera saber como hacer para q en lugar del nombre del pais aparesca su abreviacion en el archivo .csv por q mi intencion no es mostrar de q pais es quien esta viendo la pagna, sino dependiendo del pais redireccionar la pagina a una q este en el idioma q se habla en ese pais de ser neesario.
otra cosa... no se puede descargar el archivo flag.zip ya no existe esa pagina en geocities, podrias subir el archivo?

Última edición por severicks; 22/11/2009 a las 19:11
  #3 (permalink)  
Antiguo 22/02/2010, 18:06
 
Fecha de Ingreso: agosto-2009
Ubicación: Al fondo a la derecha
Mensajes: 308
Antigüedad: 15 años, 4 meses
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

I love you
__________________
Abre tu mente: Index no signigica index, significa índice
  #4 (permalink)  
Antiguo 01/03/2010, 23:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 16
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Donde debo escribir "echo $countryName;" o sea en que parte del codigo
  #5 (permalink)  
Antiguo 03/03/2010, 07:15
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Donde desees que se muestre el pais.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 03/03/2010, 09:19
 
Fecha de Ingreso: marzo-2008
Mensajes: 220
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Información muy útil!! :)

Aunque si es para realizar estudios estadísticos, el google analytics ya averigua los paises desde donde se conectan a tu aplicación, no?

Un saludo!
  #7 (permalink)  
Antiguo 03/03/2010, 09:34
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años, 7 meses
Puntos: 35
Respuesta: [APORTE] ver de que Pais es la persona que me visita

loading..........


Cita:
Iniciado por cocodj69 Ver Mensaje
Información muy útil!! :)

Aunque si es para realizar estudios estadísticos, el google analytics ya averigua los paises desde donde se conectan a tu aplicación, no?

Un saludo!
Creo que la idea del post está orientado a un "COMO SE HACE" eso. Generalmente los programadores no somos dependientes de una aplicación/servicio cerrado. (Google Analytics).


connection closed.
__________________

Maborak Technologies
  #8 (permalink)  
Antiguo 03/03/2010, 23:44
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Funciona aun este post??

quiero hacer una pregunta
  #9 (permalink)  
Antiguo 04/03/2010, 07:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Bueno si corresponde a este post claro que la puedes hacer.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 04/03/2010, 11:05
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Bueno he usado el codigo y funciona bien pero quiero agregar un campo mas


Código PHP:
$ip $_SERVER["REMOTE_ADDR"];
      
$object = new CountryFromIP();
      
$countryName =  $object->GetCountryName($ip);
      
$flagPath =  $object->ReturnFlagPath();?> 
agrege esto para que me muestre la informacion del tipo de internet que usa el visitante

Código PHP:
//
//
$info gethostbyaddr ($ip);
//
// 
me gustaria usar gethostbyname si entras en esta pagina te da la info de todo, como hago para usar estos terminos que da esa pagina

"Connecting through ", time zona, IDD Code

ip2location
  #11 (permalink)  
Antiguo 04/03/2010, 11:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Lo más que podrias hacer es ver el header que envia el navegador para saber la información del cliente. Te sugiero que leas sobre $_SERVER["HTTP_USER_AGENT"] y la función get_browser. Pero el resto de la información como el timezone, eso lo debes buscar en otro lugar como por ejemplo usando la libreria datetime. También lee este aporte para que veas una forma de obtener el Time Zone http://www.forosdelweb.com/2931406-post3.html
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 04/03/2010, 12:38
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Op's quede igual :(
  #13 (permalink)  
Antiguo 04/03/2010, 12:57
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Lee los enlaces que te indique y si tienes dudas vuelve a postear.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #14 (permalink)  
Antiguo 04/03/2010, 12:59
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

como lo incluyo??
  #15 (permalink)  
Antiguo 04/03/2010, 13:26
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Eso es lo que debes aprender a hacer. ¿Qué no entendiste de lo que te explique?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #16 (permalink)  
Antiguo 07/05/2012, 10:17
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 10 meses
Puntos: 5
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Excelente aporte..
ip2long
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #17 (permalink)  
Antiguo 19/06/2012, 13:01
 
Fecha de Ingreso: febrero-2012
Ubicación: Masaya
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: [APORTE] ver de que Pais es la persona que me visita

excelente aporte. pero mira si quiero saber el lugar exacto donde se encuntra la persona que esta utilizando mi pagina, algo asi como la longitud y latitud pero al saberlo compararlo con por ejemplo mi casa... que la persona que va a entrar a mi pagina este en mi casa si no no va a poder entrar.

me entiendes.

puedes ayudarme
  #18 (permalink)  
Antiguo 19/06/2012, 13:55
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Cita:
Iniciado por itza3985 Ver Mensaje
excelente aporte. pero mira si quiero saber el lugar exacto donde se encuntra la persona que esta utilizando mi pagina, algo asi como la longitud y latitud pero al saberlo compararlo con por ejemplo mi casa... que la persona que va a entrar a mi pagina este en mi casa si no no va a poder entrar.

me entiendes.

puedes ayudarme
Para conseguir la latitud y longitud entras en el terreno de geolocalización de W3C (que google también la utiza). Pero requiere la autorización del usuario tanto para que el vea su lolalización como para que tú la recojas. Y es tema de otro hilo y foro.

abimaelrc
Excelente.
  #19 (permalink)  
Antiguo 19/06/2012, 14:46
 
Fecha de Ingreso: febrero-2012
Ubicación: Masaya
Mensajes: 20
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: [APORTE] ver de que Pais es la persona que me visita

muchas gracias por contestar.... y si lo voy a buscar en otro foro talves encuentro algo que me sirva
  #20 (permalink)  
Antiguo 19/06/2012, 15:18
txemaarbulo
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Cita:
Iniciado por itza3985 Ver Mensaje
muchas gracias por contestar.... y si lo voy a buscar en otro foro talves encuentro algo que me sirva
Te recomendaría que busques sobre el tema de geolocalización. Lo primero que verás son códigos de javascript. Si los has de trasladar, si así lo quieres, a tu base de datos, tendrás que recogerlos por PHP. Y recuerda que debes informarlele al usuario e informarte de ello.

Hay mucho escrito en internet. Comienza por tutoriales o las API directamente. Los foros responderán a tus dudas después.
  #21 (permalink)  
Antiguo 18/09/2012, 13:37
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Fantastico aporte, hace unas semanas lo estuve buscando y no lo encontre por ningun sitio.
En cuanto tenga un hueco lo voy a probar dentro de un modulo de noticias que estoy creando.
Un saludo
__________________
http://www.paxarindesign.es
  #22 (permalink)  
Antiguo 18/09/2012, 13:42
Avatar de paxarin  
Fecha de Ingreso: enero-2010
Ubicación: Santander
Mensajes: 413
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Me acaba de surguir una pregunta?
Podria hacerse no solo con los paises? Me refiero a por ejemplo en el caso de españa provincias( No estoy seguro de que existan diferencias en las IP entre provincias).
Alguien podria decirme algo al respecto?
__________________
http://www.paxarindesign.es
  #23 (permalink)  
Antiguo 18/09/2012, 14:01
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Si existe, pero ya eso debes buscar quien ha puesto eso en un archivo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #24 (permalink)  
Antiguo 18/09/2012, 15:39
 
Fecha de Ingreso: junio-2012
Ubicación: sabadell
Mensajes: 46
Antigüedad: 12 años, 5 meses
Puntos: 6
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Gracias por el aporte..
Me surge una duda.. vosotros que teneis mas experiencia en el tema.. que es mejor.. saber el pais de procedencia del usuario, o el idioma del navegador?
Quiero decir.. si deseo catalogar al usuario registrado de mi site.. dandole informacion detallada segun idioma.. ¿es relevante saber pais de procedencia o simplemente deberia saber en que idioma habla atraves de su navegador..?.. espero que se entienda la pregunta.. un abrazo comunity!
__________________
Ante una duda.. ha de mostrarse valor/esfuerzo..
  #25 (permalink)  
Antiguo 13/10/2012, 16:37
 
Fecha de Ingreso: septiembre-2012
Ubicación: Cordoba
Mensajes: 44
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Amigo necesito tu ayuda hice todo lo que dijiste crea la clase , coloque el archivo en la misma carpeta, hice el echo lo ejecuto con mi navegador y no muestra nada
Estoy usando XAMPP server y pasandole mi ip
No sabras si es algo de Windows o del navegador
  #26 (permalink)  
Antiguo 14/10/2012, 07:47
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Localhost no funciona eso tienes que hacerlo en producción.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #27 (permalink)  
Antiguo 03/11/2012, 14:33
 
Fecha de Ingreso: septiembre-2012
Ubicación: Cordoba
Mensajes: 44
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Amigo hay alguna forma que la funcion funcione en local
Osea pasandole yo una ip
y que devuelva el pais

Lo he probado con xampp y no funciona
  #28 (permalink)  
Antiguo 03/11/2012, 14:35
 
Fecha de Ingreso: septiembre-2012
Ubicación: Cordoba
Mensajes: 44
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: [APORTE] ver de que Pais es la persona que me visita

soy novato el cvs va en la misma carpeta que la clase php?
  #29 (permalink)  
Antiguo 14/06/2013, 03:27
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Muy buenos días.
Acabo de aterrizar en forosdelweb.com y tengo una pregunta sobre este tema, que no sé si todavía estará vigente.
Tengo descargado el csv y lo he incluido en una base de datos pero si busco mi ip me dice que estoy en EU.
Pero estoy en ES.
El rango de ip desde 67108864 hasta 83886079 dice que está en EU pero, junto con mi ip 83501397, estoy en ES
Es que debería añadir o quitar algo a las ip que vienen en el csv?
Muchas gracias de antemano.
  #30 (permalink)  
Antiguo 02/07/2013, 03:49
Avatar de Mosiah16  
Fecha de Ingreso: abril-2010
Ubicación: Antofagasta
Mensajes: 70
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: [APORTE] ver de que Pais es la persona que me visita

Link de las banderas offline....
__________________
Tu mente es capaz de todo...

Etiquetas: aportes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 03:57.