Foros del Web » Programando para Internet » PHP »

Averiguar el pais de procedencia

Estas en el tema de Averiguar el pais de procedencia en el foro de PHP en Foros del Web. Hola, pues eso, ¿Cómo se puede saber en PHP el país de procedencia de los visitantes de una web? ;) Es para que dependiendo del ...
  #1 (permalink)  
Antiguo 06/05/2002, 03:57
 
Fecha de Ingreso: mayo-2002
Mensajes: 1
Antigüedad: 15 años, 7 meses
Puntos: 0
Averiguar el pais de procedencia

Hola,

pues eso, ¿Cómo se puede saber en PHP el país de procedencia de los visitantes de una web? ;)

Es para que dependiendo del país de procedencia de la visita, se muestre una información u otra.

Salu2
  #2 (permalink)  
Antiguo 14/11/2002, 12:32
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 16 años, 7 meses
Puntos: 2
si alguien sabe?
se como sacar el navegador y so, pero del pais nada.

Gracias!
  #3 (permalink)  
Antiguo 14/11/2002, 13:14
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
hay una clase que puede hacer eso, lo hace mediante la direccion ip del vistante, consultando en una base de datos, el metodo es bueno, y funciona pero como todo es tan relativo en la wé no es 100% confiable

te doy la direccion a la clase, se llama NetGeo, te recuerdo que para bajar las clases de este sitio debes estar registrado

http://www.phpclasses.org/browse.html/package/514.html?

saludos
__________________
=PoWeReD By MySeLf!=
  #4 (permalink)  
Antiguo 14/11/2002, 13:38
Avatar de Phobos  
Fecha de Ingreso: abril-2001
Ubicación: sentado frente a un pc prestado
Mensajes: 375
Antigüedad: 16 años, 7 meses
Puntos: 2
no era lo que esperaba
  #5 (permalink)  
Antiguo 14/11/2002, 14:23
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
pues puedes explicarlo mejor entonces?? pues que yo sepa, nio existe una funcion que te devuelva algo asi como la posicion geografica del visitante en php, el unico recurso concreto que tienes es la direccion ip, a travez de ella, puedes saber el isp(por ejemplo) por lo general a travez de los priemros numeros de la ip, con esto como ya te habras dados cuenta podrias sacar el pais...si tienes una correspondencia previa en una base de datos.

no estoy considerando laopcion que tus usuarios tengan que registrarse para mostrar info segun su pais cuando entren a tu pagina

saludos
__________________
=PoWeReD By MySeLf!=
  #6 (permalink)  
Antiguo 14/11/2002, 14:35
Avatar de GhostRider  
Fecha de Ingreso: julio-2001
Ubicación: en mi propio infierno
Mensajes: 248
Antigüedad: 16 años, 4 meses
Puntos: 0
he visto lo del netgeo, pero tengo entendido que lo hacen con un tracing en vez de una base de datos, asi resulta mas confiable.
  #7 (permalink)  
Antiguo 14/11/2002, 14:48
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Ves a http://www.php.net y haz clic en show source. Ahí verás el código fuente de la web y, por arriba, hay una función de pocas líneas que resuelve el host del usuario y coge el dns1 (correspondiente a país).
__________________
M a l d i t o F r i k i
  #8 (permalink)  
Antiguo 14/11/2002, 14:55
Avatar de e-miliox  
Fecha de Ingreso: noviembre-2002
Ubicación: San Antonio - Chile
Mensajes: 223
Antigüedad: 15 años, 1 mes
Puntos: 7
podrias pastearla? no la veo

...
ya la vi, es un INCLUDE de la pagina principal esta es la dir
http://www.php.net/source.php?url=/include/site.inc

saluuu!
__________________
=PoWeReD By MySeLf!=

Última edición por e-miliox; 14/11/2002 a las 15:01
  #9 (permalink)  
Antiguo 14/11/2002, 15:09
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 15 años, 11 meses
Puntos: 17
Código PHP:
global $REMOTE_HOST$REMOTE_ADDR$HTTP_X_FORWARDED_FOR$MIRRORS;
    
    
// We do not know the country
    
$country '';

    
// Figure out IP address and hostname
    
$ipaddr $HTTP_X_FORWARDED_FOR $HTTP_X_FORWARDED_FOR $REMOTE_ADDR;
    
$hostname $REMOTE_HOST;
    
    
// If we have no hostname, or if it's an IP
    // address, then try to get that hostname
    
if  (!$hostname || $hostname == $ipaddr) {
        
$hostname = @gethostbyaddr($ipaddr);
        if (
$hostname == $ipaddr) { $hostname ""; }
    }
    
    
// If we have that hostname finnaly, get the TLD
    
if ($hostname) {
        if (
ereg('([a-zA-Z]+)$'$hostname$reg)) {
            
$country $reg[0];
        }
    } 
Estaba más escondido de lo que recordaba
__________________
M a l d i t o F r i k i
  #10 (permalink)  
Antiguo 15/11/2002, 23:57
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 15 años, 5 meses
Puntos: 0
Yo lo hice así...

Código PHP:
$host gethostbyaddr($REMOTE_ADDR);
$dominio=substr$host, (strrpos$host,".")+1));

//luego valide así....

if ($dominio == "ad" ) {
$dominio "andorra";
}
elseif (
$dominio == "ae" ) {
$dominio "emiratos-arabes-unidos";
}
elseif (
$dominio == "af" ) {
$dominio "afganistan";
}
elseif (
$dominio == "ag" ) { 
$dominio "antigua-barbuda";
}
elseif (
$dominio == "ar" ) {
$dominio "argentina";
}
.....
else
$dominio "Desconocido"

Claro, hice algo un poco más personalizado, puedo reconocer hasta determinado isp de cualquier país siempre y cuando exista la variable $dominio, tipo con los de mi país que son dos, brindo estadisticas de las visitas que hacen a mi url con estos isp, lo que hago con esta variable $dominio es insertarla en un file txt cada visita tipo contador, luego la inserto en una DB y su posterior query para sacar las estadiscas, claro que no es esto exactamente lo que buscas, en tu caso usarias la variable $dominio para tu interes que es para saber de que país te enviaron el correo, eso te lo dije como anetota.
  #11 (permalink)  
Antiguo 16/11/2002, 00:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
hrxnet .. Para otra vez usa swich

Código PHP:
switch ($dominio) {
   case 
"ad":
   
$dominio="andorra";
    break;

// etc case .. break
   
default:
       
$dominio="No se de andee eres xD";

o mejor un array tipo:

Código PHP:
$dominios=array ("ad"=>"andorra","cl"=>"chile", .... etc....);

// y luego haces un 

if (in_array($dominio,$dominios)){
echo 
$dominios[$dominio];
}else{
echo 
"No se de andee eres";

Ese mismo array lo puedes tener en un ficherito de texto plano tambien . .tipo:

pais_letras|pais_nombre_completo
pais_letras|pais_nombre_completo
pais_letras|pais_nombre_completo

Por poner un ejemplo .. leerlo hacia $dominios con un file() .. etc etc ...

Un saludo,
  #12 (permalink)  
Antiguo 16/11/2002, 11:05
Avatar de hrxnet  
Fecha de Ingreso: julio-2002
Ubicación: Sto. Dgo. RD
Mensajes: 516
Antigüedad: 15 años, 5 meses
Puntos: 0
bueno, gracias por el dato, cuando hice ese sistema aún no dominaba bien el tema de los "switch" ahora los uso para hacer template, a mi entender en este caso esa función solo me veneficia en darle un poco más de estilo a mi script la verdad no le veo ninguna otra utilidad a menos que ustedes quieran orientarme y decirme cual es la ventaja de usar switch y no elseif en estos caso a demás de la estetica que le da el primero. Con lo del array la verdad no lo uso porque primero no lo dominio bien y me parecen muy complicados tratarlo, si podes mencinarme las ventajas de usar un array en este caso es pecifico te lo agradezco, ya se que su utlidad en otros casos es muy potente pero en este caso la verdad no logro verla.
  #13 (permalink)  
Antiguo 16/11/2002, 14:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo de usar swhits .. mas que nada es para entregar un codigo limpio y organizado ... tambien ayuda a indentificar errores y bloques .. A nivel "velocidad" de proceso . .no se como andará .. seria cosa de hacerle un "microtime()" a ambos algoritmos a ver q tal funcionan ...

Lo de emplear arrays .. mas de lo mismo .. Con el uso del array como veras ... el codigo se reduce muchooo y los datos q empleamos (esos paises ) los tenemos un pco mas separados del código y no incrustados en esos swhits o en esos if ...

Si a eso sumas (caso del array) que perfectamente y muyy facilmente puedes tener esos datos en un fichero de texto plano y leerlo hacia un array con la misma estructura q tienes en el ejemplo .. Mas todavia separamos el código de los datos y seria factible hacer por ejemplo un script de mantención (borrar algun pais . modificarlo .. etc) si fuera necesario.

Tal vez para este caso .. esos datos son fijos y no hay porqué modificarlos (salvo q salga alguna cosa como lo de Yugoslavia o paises del este xD y te desmonte un poco el listado ;) ) ...

Prestale atencion al tema "array" y veras lo funcional q es para la mayoria de casos de programación tipica .. Yo la verdad uso muchooo array's .. funciones in_array .. y bucles foreach .. Con eso consigo en la mayoria de casos evitar repetir porciones de codigo que hacen lo mismo .. tal vez . teneindo una funcion q hace un proceso sobre algunos parametros de entrada q son variables y se sus cualidades .. meto todo en un array y lo recorro con un bucle foreach ..

Un saludo,
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




La zona horaria es GMT -6. Ahora son las 22:16.