Conocer Origen de la Visita

Quisiera sabe como es posible conocer el origen de una visita, por ejemplo el país, el dominio desde donde accede, etc, es para realizar estadísticas de un sitio al estilo de nedstatbasic.net...

2 respuestas

Respuesta
1
Existen unas variables de entorno que nos dicen los datos que quieres saber mediante variables predefinidas.
Por ejemplo la variable $REMOTE_ADDR nos indicaria la IP del cliente, o por medio de los array $HTTP_SERVER_VARS y $HTTP_ENV_VARS.
Ejecuta el ejemplo que te mando para que los veas mejor:
<?
foreach($HTTP_ENV_VARS as $key=>$indice){
echo $key."=".$indice."<br>";
}
?>
Después de ejecutarlo podrás conocer los datos que te hacen falta.
Respuesta
1
En PHP se define una variable que se llama $REMOTE_ADDR y que se corresponde con la IP del cliente. Luego puedes intentar hacer una resolución DNS inversa. En función del dominio que obtengas puedes intentar deducir de qué país es la IP.
El código para realizar esto podría quedar así:
<?php print gethostbyaddr($REMOTE_ADDR) ?>
Ten en cuenta que intentar obtener el país del visitante mediante este método es bastante poco acertado, ya que en realidad estás obteniendo solamente el país al que está asociado el dominio (si es que no es un .com, .org, etc). Tendrías que tener una base de datos de IPs relacionándolas con su país de origen, y aún así no tendrías nada, dado que, por ejemplo, un cliente español podría estar usando un ISP americano. Pero bueno, creo que esto soluciona el problema que planteabas.
Esta función no me retorna el nombre de maquina para todas las maquinas, ¿es algo normal?
Sí, es perfectamente normal. Ten en cuenta que la llamada gethostbyaddr() consulta mediante DNS el nombre de host correspondiente a una IP. Si bien a cada nombre de dominio le corresponde una IP (más o menos), puede haber varios dominios sobre la misma IP. En ese caso (y en otros) el servidor DNS puede no tener una correlación IP -> nombre de host, dado que dicha correlación no es unívoca. En otros casos simplemente no el servidor DNS de un dominio no tiene una tabla de resolución inversa. En ese caso poco puedes hacer.
Y no existe forma de preguntar por la red, a quien pertenece, por ejemplo la dirección 200.46.144.0 pertenece a xaire.com, sera posible ¿?
Pues efectivamente. Existe la posibilidad de consultar los registros DNS para saber quien es el responsable último de un rango de IPs determinado. En Linux el comando suele llamarse "whois". Si no tienes Linux puedes consultar la base de datos RIPE directamente en http://www.ripe.net/. Creo recordar que esta base de datos se puede consultar mediante un CGI, así que sería fácil integrarlo en un programa PHP. Este sería la información devuelta para una dirección IP de ADSL de Telefónica de España:
% This is the RIPE Whois server.
% The objects are in RPSL format.
% Please visit http://www.ripe.net/rpsl for more information.
% Rights restricted by copyright.
% See http://www.ripe.net/ripencc/pub-services/db/copyright.html
Inetnum: 217.126.0.0 - 217.127.255.255
netname: RIMA
descr: Telefonica De Espana SAU (NCC#2001038578)
Descr: Red de servicios IP
Descr: Spain
Country: ES
Admin-c: LJP1-RIPE
Tech-c: FLT14-RIPE
Status: ASSIGNED PA
notify: [email protected]
Mnt-by: MAINT-AS3352
Changed: [email protected] 20010322
changed: [email protected] 20020206
source: RIPE
route: 217.127.0.0/18
descr: Telefonica Data Espan~a
origin: AS3352
mnt-by: MAINT-AS3352
mnt-routes: MAINT-AS3352
mnt-lower: MAINT-AS3352
changed: [email protected] 20010308
changed: [email protected] 20020118
changed: [email protected] 20020313
source: RIPE
person: L. Jimenez
address: TELEFONICA DE ESPANA
address: Emilio Vargas, 4
address: 28043-MADRID
address: SPAIN
phone: +34 91 5846497
fax-no: +34 91 5842650
e-mail: [email protected]
nic-hdl: LJP1-RIPE
notify: [email protected]
changed: [email protected] 20011219
source: RIPE
person: Francisco Lorenzo de Tuero
address: TELEFONICA DE ESPANA
address: Emilio Vargas, 4
address: 28043-MADRID
address: SPAIN
phone: +34 91 5194446
Fax-no: +34 91 5846936
e-mail: [email protected]
Nic-hdl: FLT14-RIPE
notify: [email protected]
changed: [email protected] 20020225
Source: RIPE
Te en cuenta que RIPE es solo una de las bases de datos de IPs. Hay otras por ahí que se pueden configurar en el programa "whois". Ten en cuenta que no todas las bases de datos ofrecen información sobre el país del responsable de la IP.
¿No tienes idea donde puedo conseguir un script para consultarlo mediante CGI?
Pues mira la siguiente URL:
http://www.ripe.net/perl/whois
Es un CGI al que le pasas la IP y te devuelve la información sobre el dueño de esa IP. De ahí se puede extraer la información que deseas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas