Foros del Web » Programando para Internet » PHP »

procedencia o pais de la visita

Estas en el tema de procedencia o pais de la visita en el foro de PHP en Foros del Web. hola, estube viendo lo que brinda http://ip-to-country.directi.com, que es una base con rangos de ip con los paises a los que corresponde dichos ip. bueno ...
  #1 (permalink)  
Antiguo 05/09/2003, 13:59
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
Exclamación procedencia o pais de la visita

hola, estube viendo lo que brinda http://ip-to-country.directi.com, que es una base con rangos de ip con los paises a los que corresponde dichos ip.

bueno yo pase ya la base a mySQL, pero lo que no entiendo son las formulas para convertir los numeros de ip al formato en que estan en la base.

alguna buena alma caritativa que me ayude.

los numeros que me tiran las formulas no corresponden a ningun rango dentro de la base.

//con esta el numero que me tira no corresponde a ningn rango de ip:

$ip = "194.109.136.80";
$ip_bytes = explode(".", $ip);
$longnum = ($ip_bytes[0] << 24) | ($ip_bytes[1] << 16) |
($ip_bytes[2] << 8) | $ip_bytes[3];
printf("%u\n", $longnum);


y con esta tampoco me funca:

SELECT country_name FROM iptocountry
WHERE inet_aton('$remote_addr') >= ip_from
AND inet_aton('$remote_addr') <= ip_to;


espero sus respuestas con urgencia
__________________
-----------------
_
__|_|__
º(-_-)º
  #2 (permalink)  
Antiguo 05/09/2003, 14:07
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
La verdad no tengo ni idea, pero si que me pica la curiosidad
que es los ragos IP me lo puedes explicar

gracias

un saludo
  #3 (permalink)  
Antiguo 05/09/2003, 14:16
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Ya esta , encontre informacion sobre el tema

para convertir la ip a numero y al reves hay estas funciones

Código PHP:
$dotted_ip_address "194.109.136.80";
$ip_number sprintf("%u"ip2long($dotted_ip_address));

echo 
"<li>".$ip_number;
$ip_numberb=$ip_number;
$dotted_ip_addressb long2ip($ip_numberb);

 echo 
"<li>".$dotted_ip_addressb
espero que te sirva
  #4 (permalink)  
Antiguo 05/09/2003, 20:16
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
bueno mira los rangos de ip es porque en la base hay por ejemplo 2147483647 - 2147483647 esos numero corresponden al pais argentina porsupuesto hay muchos mas rango que corresponden a argentina y asi a muchos otros paises.

hice como me decis:

----------------------
$dotted_ip_address = $REMOTE_ADDR;
$ip_number = sprintf("%u", ip2long($dotted_ip_address));


echo "<li>".$ip_number;
$ip_numberb=$ip_number;
$dotted_ip_addressb = long2ip($ip_numberb);

echo "<li>".$dotted_ip_addressb;
----------------------

y me tira este numero 3358290596 que no entra dentro de ninguno de los mas de 45000 rango que tiene la base, pero yo se que a mi ip si la detecta como argentina porque en ip-to-country me dice perfectamente que soy de argenrina.

hay algo que no sale bien.

espero que alguien que ya lo haya hecho o que vea la forma correcta me diga.
__________________
-----------------
_
__|_|__
º(-_-)º
  #5 (permalink)  
Antiguo 05/09/2003, 20:31
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
hola,

esta funcion la saque de la pagina que tu diste quizas me
equivoque al pasarla , mira tu en
http://ip-to-country.directi.com/node/view/55

alli explica como hacerlo

prueba con esto para sacarte tu IP

if (getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} else {
$ip = getenv("REMOTE_ADDR");
}

un saludo
  #6 (permalink)  
Antiguo 05/09/2003, 20:58
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
·%$3#€~€~#

si ay me di cuenta que lo sacaste de ahi.

lo que me diste ahora

if (getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} else {
$ip = getenv("REMOTE_ADDR");
}

me da el mismo numero que $REMOTE_ADDR

asique ese no es el problema.

please alguien que lo halla hecho o que nos ayude ami y a Jordi
:-p
__________________
-----------------
_
__|_|__
º(-_-)º
  #7 (permalink)  
Antiguo 05/09/2003, 22:16
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 20 años, 9 meses
Puntos: 1
Hola gdb7,

Se me ocurre que podría ser un problema con la base da datos que tienes en este momento. Acabo de descargar los datos de IP-to-Country desde el sitio web (el archivo marcado como del 19 de Agosto), y el archivo csv tiene esta línea:


"3358261248","3358326783","AR","ARG","ARGENTIN A"


La cual parece coincidir con el número que has mencionado (3358290596). De modo que antes que nada te recomendaría que revisaras cuidadosamente los datos que tienes, ya que ciertamente el problema no parece estar en el código del script.

Un cordial saludo
  #8 (permalink)  
Antiguo 05/09/2003, 22:27
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Alguien me podria explicar 2 cosas?

1) aunque estoy registrado, ya no encuentro la forma de bajar la base del sitio.

2) si la tuviera (una vez la tuve) como hago para meterla en una tabla de mysql???

Gracias.
  #9 (permalink)  
Antiguo 05/09/2003, 23:39
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 21 años, 11 meses
Puntos: 7
eso... como se baja esa tabla???
__________________
No tengo firma ahora... :(
  #10 (permalink)  
Antiguo 05/09/2003, 23:46
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
una preguntilla, te da lo mismo si no es por ip????, si no es por ip, me lo dices y lo hago... en 5 minutillos please
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 06/09/2003 a las 00:23
  #11 (permalink)  
Antiguo 06/09/2003, 00:02
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
Código PHP:
<?php
$idioma_navegador 
$_SERVER[HTTP_ACCEPT_LANGUAGE]; //variable global
$idioma_navegador strtoupper($idioma_navegador); //la pasamos por la licuadora multiusos

echo "<font face=Verdana size=1><center>Navegador: ".$idioma_navegador//voila el idioma del navegador del user...joorr
echo "<br>";

switch (
$idioma_navegador) {
    case 
'ES':                         // Para España
            
$dame_pais "España";
        break;

    case 
'SP':                         // Para España en ingles y casi el resto de paises
            
$dame_pais "España";
        break;

    case 
'AR':                         // Para Argentina
            
$dame_pais "Argentina";
        break;

    default:
            
$dame_pais "- anonimo -"// Por si la lista no esta completa que ponga algo
            
$suceso "1";              // Marcamos como error
            
$explicacion "No se ha consegido saber de que pais es... completa la lista"//explicamos el error
        
break;
}
echo 
"Usuario de: ".$dame_pais;         // Mostramos el idioma del navegador convertido a nombre de pais

if ($suceso == "1"){                    // Comprobamos si existio error
    
echo "<br>".$explicacion;           // Si hay error y explicamos el pq
}
?>
ya se que es tope cutre, pero es lo unico que se hacer para ayudarte, solo tedras que completar lo que falta... no hace falta que pongas en chino o japones... directamente ellos ni entran... como nosotros con sus web, pero si es cierto que hay un gran numero de japoneses que sabes Castellano... les gusta mucho nuestro idioma, ya que es muy rico y completo en todos sus aspectos. venga un saludo


--------------------------------------------------------------------------------

para que no tengs que meter semejante animalada de paises, lo puedes hacer en otro fichero, y llamarlo desde donde quieras, esto supongo que ya lo sabras de sobra, pero bueno, aqui te dejo el ejemplo...



Código PHP:
//----------------- fichero lang_navigator.inc.php INICIO
<?php
$idioma_navegador 
$_SERVER[HTTP_ACCEPT_LANGUAGE]; //variable global
$idioma_navegador strtoupper($idioma_navegador); //la pasamos por la licuadora multiusos

switch ($idioma_navegador) {
    case 
'ES':                         // Para España
            
$dame_pais "España";
        break;

    case 
'SP':                         // Para España en ingles y casi el resto de paises
            
$dame_pais "España";
        break;

    case 
'AR':                         // Para Argentina
            
$dame_pais "Argentina";
        break;

    default:
            
$dame_pais "- anonimo -"// Por si la lista no esta completa que ponga algo
            
$suceso "1";              // Marcamos como error
            
$explicacion "No se ha consegido saber de que pais es... completa la lista"//explicamos el error
        
break;
}
?>
//----------------- fichero lang_navigator.inc.php FIN

Código PHP:
//----------------- y lo usariamos de esta manera INICIO
<?php
require_once("lang_navigator.inc.php");
echo 
"Usuario de: ".$dame_pais;         // Mostramos el idioma del navegador convertido a nombre de pais
if ($suceso == "1"){                    // Comprobamos si existio error
    
echo "<br>".$explicacion;           // Si hay error y explicamos el pq
}
?>
//----------------- y lo usariamos de esta manera FIN
__________________
3w.valenciadjs.com
3w.laislatv.com

Última edición por nuevo; 06/09/2003 a las 00:33
  #12 (permalink)  
Antiguo 06/09/2003, 04:19
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
hola,

estuve mirando otros sitios y encontre lo mismo
parece que el codigo está bien aqui te dejo un codigo sacado
del manual PHP frances que por cienrto esta muy bien,
al menos lo entiendo mas que el ingles
Código PHP:
<?php
$ip 
gethostbyname("www.php.net");
$out "Les URLS suivantes sont équivalentes :<br>\n";
$out .= "http://www.php.net/, [url]http://[/url]".$ip."/, et [url]http://[/url]".ip2long($ip)."/<br>\n";
echo 
$out;?>
Como veras nos da el mismo codigo, por lo tanto
imagino que sera la tabla que no lleva todos los rangos

por cierto si queresis ver la pagina esta el la URLhttp://dev.nexen.net/docs/php/annotee/manuel_tocd.php

un sludo
  #13 (permalink)  
Antiguo 06/09/2003, 08:08
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
SIIIIIIIIIIIIIIIIIIIIIIIII

Bueno ALLLL FINNNNNNNNNNNN abri los ojos y me di cuenta que estaba pachando, gracias a que dijieron ustedes que habian bajado la base de Agosto (la misma que habia bajado yo), y que si habia un numero que entraba en el que ami me daba con mi ip, entonces hice una consulta en my base para que me muestre todos los rangos de ip que correspondian a argentina y descrubi oooooooooOOOOOOOO semejante problema, cuando hice el traspaso de la base cvs a mySQL no se por que razon motivo causa circunstancia se me habian guardado los 179 rangos de ip que corresponden a Argentina, todos iguales es decir algo asi

2361327616 2361393151 AR ARG ARGENTINA
2361327616 2361393151 AR ARG ARGENTINA
2361327616 2361393151 AR ARG ARGENTINA
2361327616 2361393151 AR ARG ARGENTINA
.......

por lo que nunca me hiba a encontrar ningun otro rango, asique volvi a cargar la base y otra vez oooooooooOOOOOOOOOOOO caramba, SE CARGO BIEN!!!!!!!!

yo propongo juicio a mySQL por daño y perjuicios materiales (le pegue muchas veces a la compu) y/o morales (me volvi tonto).

"NUEVO" ---> gracias por tu ayuda, pero viste como es esto cuando uno se encapricha con quererlo hacer de una forma. si te sirve hay un post aca en forosdelweb que esta hecho de esa manera y ya tiene casi todos los paises.

"Jordi" ----> Gracias hermano por tu voluntad

"Mickel and Zeus" --> la tabla se encuentra dentro de "Download", para meterla en mySQL tienes que crear una tabla de 5 campos
ip_from ip_from otro otro2 country_name
y luego darle en donde dice insertar documento de texto dentro de la tabla, lo demas es sencillo.

lo ultimo es decirles que esto lo voy a utilizar para hacer todo un sistema de estadisticas, para luego distribuirlo gratuitamente.
saludos y gracias de nuevo.

Gracias a todos por hacerme abrir los ojos.

GDB7
__|_|__
º(-_-)º
"
__________________
-----------------
_
__|_|__
º(-_-)º
  #14 (permalink)  
Antiguo 06/09/2003, 08:16
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
me olvidaba si quieren ver funcionando :

http://www.alpedazo.com.ar/index2.php

chiau!
__________________
-----------------
_
__|_|__
º(-_-)º
  #15 (permalink)  
Antiguo 06/09/2003, 10:56
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
ya compartiras el codigo con nosotros?

jeje, claro si lo deseas

un saludo
  #16 (permalink)  
Antiguo 06/09/2003, 11:50
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Cita:
y luego darle en donde dice insertar documento de texto dentro de la tabla
Y en donde se supone que aparece eso???
  #17 (permalink)  
Antiguo 06/09/2003, 17:55
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
Vista de Impresion
Ejecutar SQL query/queries en la base de datos alpedazo_com_ar [Documentación] :


Examinar - Seleccionar - Insertar - Vaciar

Insertar nuevo campo :

Modificar el Order By de la tabla :

Insertar archivo de texto en la tabla <<<<<<<------------

Mostrar volcado esquema de la tabla
__________________
-----------------
_
__|_|__
º(-_-)º
  #18 (permalink)  
Antiguo 06/09/2003, 18:35
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Todavia no se de que estan hablando.
Vista de impresion??? en donde sale eso, que programa estan usando? pequeño detalle no?
  #19 (permalink)  
Antiguo 07/09/2003, 05:03
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 20 años, 11 meses
Puntos: 2
Cita:
Mensaje Original por gdb7
Vista de Impresion
Ejecutar SQL query/queries en la base de datos alpedazo_com_ar [Documentación] :


Examinar - Seleccionar - Insertar - Vaciar

Insertar nuevo campo :

Modificar el Order By de la tabla :

Insertar archivo de texto en la tabla <<<<<<<------------

Mostrar volcado esquema de la tabla
ya podias poner el code y el fichero sql almenos.... o es alto secreto....
__________________
3w.valenciadjs.com
3w.laislatv.com
  #20 (permalink)  
Antiguo 07/09/2003, 07:19
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
zeus_bsas: no es un programa es en la base mySQL, si no tenes mySQL olvidate del tema o busca en ip-to-country que por ahi sale como hacerlo sin mySQL.
----

nuevo:
$dotted_ip_address = "194.109.136.80";
$ip_number = sprintf("%u", ip2long($dotted_ip_address));

ese es el codigo, no se a que te referis con fichero mySQL pero si es a la base, bajala de ip-to-country y listo, y ahi tambien sale como hacer la consulta mySQL.

saludos.
Creo que este es mi ultima respuesta en este post.

hasta luego
__________________
-----------------
_
__|_|__
º(-_-)º
  #21 (permalink)  
Antiguo 07/09/2003, 08:50
 
Fecha de Ingreso: junio-2002
Ubicación: Buenos Aires, Argentina
Mensajes: 876
Antigüedad: 21 años, 10 meses
Puntos: 0
Cita:
Mensaje Original por gdb7
zeus_bsas: no es un programa es en la base mySQL, si no tenes mySQL olvidate del tema o busca en ip-to-country que por ahi sale como hacerlo sin mySQL.
Pero hombre, aunque use MySQL, esta como base de datos no tiene tales opciones. Te estas confundiendo y estas hablando de algun gestor de base de datos, que es lo que necesito saber.
  #22 (permalink)  
Antiguo 08/09/2003, 11:51
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 21 años
Puntos: 0
perdon, phpMyAdmin

:)
__________________
-----------------
_
__|_|__
º(-_-)º
  #23 (permalink)  
Antiguo 10/09/2003, 18:32
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 21 años, 11 meses
Puntos: 7
ahora si! Gracias!
__________________
No tengo firma ahora... :(
  #24 (permalink)  
Antiguo 21/09/2003, 19:11
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
donde meto ese codigo?, en mi pagina?, por cierto como detecto si el visitante es de España para asi mandarlo a otra pagina?
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 05:53.