Detectar el sistema decimal actual Un Color Picker con una sola línea de código

Determinar el país de origen con la dirección IP

Existen diversos motivos que convierten en muy interesante el hecho de poder conocer el país de origen de los clicks realizados en nuestro sitio Web: para ofrecer una página distinta o en un idioma diferente para cada país, para medir la audiencia de una página según el criterio geográfico, y más generalmente para adaptar la estrategia de comunicación de la empresa a las características geográficas de los usuarios.

Gracias a la base de datos de 4D directamente acoplada con el servidor Web, podemos crear una tabla que contenga una lista de países asociada a un rango de direcciones IP. Esos rangos de direcciones IP se presentan como números que deben ser traducidos a formato IPv4, es decir tipo xxx.xxx.xxx.xxx, para ser comparados con los que recibe el servidor Web de 4D.

¿Cómo funciona?
En nuestro servidor Web recibimos una petición de la dirección IP 200.161.186.92 (en el parámetro 3 de los métodos de base de datos On Web Connection ó On Web Authentication). Este número lo transformamos a 3366042204, que es el equivalente entero de la dirección IP.

Luego buscamos ese número en la tabla de rangos de IP y ésta nos devuelve el siguiente resultado: nuestro visitante viene de Brasil.

tt2_dialogo.jpg

¿Qué hay detrás?
Primero debemos conseguir una buena tabla con datos de rangos de direcciones IP y países. Recomendamos la siguiente, que puede descargarse gratuitamente, se actualiza cada mes y viene en formato CSV:
http://www.maxmind.com/app/geoip_country

Estos rangos de direcciones IP son asignados por la ICANN (Internet Corporation for Assigned Names and Numbers) a los países.

Debemos adaptar el archivo descargado a una tabla en nuestra base de datos con la siguiente estructura:

tt2_tabla.jpg

Cuando recibimos una petición de dirección IP, la convertimos de formato A.B.C.D a Numérico (real) y buscamos este número en la tabla IP_Paises para ver en qué rango se encuentra.

tt2_listado_paises.jpg

Método IP_a_Pais

`Método IP_a_Pais
`Este método recibe una dirección IP en formato A.B.C.D
`la transforma a formato numérico usando el método IP_a_Numerico,
`lo busca en la tabla de rango de IPs y países
`y devuelve el país al cual pertenece la dirección IP solicitada

C_TEXT($1;$0)
C_REAL(v_IP_Num)
v_IP_Num:=IP_a_Numerico($1)

QUERY([IP_PAISES];[IP_PAISES]IP_Inicio_Num<=v_IP_Num;*)
QUERY([IP_PAISES]; & ;[IP_PAISES]IP_Fin_Num>=v_IP_Num)

If (Records in selection([IP_PAISES])=1)

$0:=[IP_PAISES]Pais

End if

Método IP_a_Numerico

`Método IP_a_Numerico
`Convierte una dirección IP con formato A.B.C.D
`a formato numérico

`Declaraciones
C_REAL($0;$vl_IP_A;$vl_IP_B;$vl_IP_C;$vl_IP_D)
C_TEXT($1;$vt_IP_A;$vt_IP_B;$vt_IP_C;$vt_IP_D)
ARRAY TEXT($a_IP;4)

`Conversión de la dirección IP a un array de 4 elementos
$vlElem:=0
Repeat

$vlElem:=$vlElem+1
$vlPos:=Position(”.”;$1)
If ($vlPos>0)

$a_IP{$vlElem}:=Substring($1;1;$vlPos-1)
$1:=Substring($1;$vlPos+1)

Else

$a_IP{$vlElem}:=$1

End if

Until ($vlPos=0)

`Conversión de cada elemento del array a real según su posición
$vl_IP_A:=(256^3)*Num($a_IP{1})
$vl_IP_B:=(256^2)*Num($a_IP{2})
$vl_IP_C:=(256^1)*Num($a_IP{3})
$vl_IP_D:=Num($a_IP{4})

`Suma de los elementos
$0:=$vl_IP_A+$vl_IP_B+$vl_IP_C+$vl_IP_D


Para saber más:
http://www.4d.com/docs/CMU/CMU02008.HTM
http://es.wikipedia.org/wiki/Direccion_IP

Publicado el 5 Julio, 2007 por redaccion | | Imprime este artículo
Detectar el sistema decimal actual Un Color Picker con una sola línea de código

3 Comentarios a “Determinar el país de origen con la dirección IP”

  1. messias10 dice:

    Bueno pues.. lei este articulo y me interesa descargar el programa.. puede ser util a la hora de investigar quienes intentan conectarse a nuestro ordenador..
    ASi que cual es:
    ¿Nombre del Programa? O El LINk de DEscarga

  2. redaccion dice:

    Este artículo proponía código fuente para incluir en una aplicación creada con el entorno de programación 4D.

    El programa 4D (4th Dimension 2004.6) y toda su documentación se descargan desde la siguiente página:
    http://www.4dhispano.com/products/downloads/download_2004demo.html

    Si no conoces 4D, la mejor forma de empezar es suscribirte a la oferta 4D Free Edition para poder probar sin compromiso y aprender a tu ritmo sin ningún coste.
    http://www.4dhispano.com/ofertas/4dfree.html

  3. FELIPE dice:

    buna la info…gracias

Deja una respuesta