GETVisitor: Obtén Información del Visitante con PHP

Buenas con todos, nuevamente estoy de vuelta. Después de unos problemas con los hosting gratuitos, y volviendo a retomar esto que me apasiona, la programación, ademas de repostear este articulo que se perdió en la transferencia de hosting.

Bueno a lo nuestro, sobre como obtener la información de nuestros visitantes, con un script que encontrar en PHPClasses.ORG, GETVisitor, para que si en algún momento deseamos publicar de donde vienen nuestras visitas y poder mostrarlas en un cuadro o mejor aun graficarlas en un Mapa mundial de Google Maps.

Primero que nada, debes saber que la mayoría de esta información la obtenemos de un servicio de la  IP-AP.COM que brinda gratuitamente esta información, entendemos que gratuitamente los datos son limitados ya sea por su numero de consultas(250 por minuto), por eso existe la versión de Paga/Pro la cual da datos muchos mas exactos, como numero ilimitados de consultas asi como datos exactos de Pais,Regio, Ciudad  en múltiples idiomas y acceso seguro mediante SSL, a esto se le añade los datos de la versión gratuita, que es Geolocalizacion con actualización diaria, la posibilidad de escoger los formatos de salida como PHP, XML, JSON,CSV y Line, consultas para IPv4 e IPv6, asi como Acceso a una DNS API.

1.-  BASE DE DATOS:

Como les dije utilizaremos la versión gratuita, asi que manos a la obra con lo primero que necesitamos, una base de datos, la cual tendrá una estructura como la siguiente:

CREATE TABLE IF NOT EXISTS `visitors` (
`id` int(11) NOT NULL,
  `domain` varchar(150) NOT NULL,
  `ip` varchar(15) NOT NULL,
  `serverDate` varchar(10) NOT NULL,
  `serverTime` varchar(10) NOT NULL,
  `timeZone` varchar(100) NOT NULL,
  `userOS` varchar(100) NOT NULL,
  `userBrowser` varchar(100) NOT NULL,
  `userAgent` varchar(300) NOT NULL,
  `country` varchar(100) NOT NULL,
  `countryCode` varchar(10) NOT NULL,
  `city` varchar(100) NOT NULL,
  `state` varchar(10) NOT NULL,
  `lat` varchar(40) NOT NULL,
  `lon` varchar(40) NOT NULL,
  `isp` varchar(200) NOT NULL,
  `org` varchar(200) NOT NULL,
  `asp` varchar(200) NOT NULL
) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=latin1;

2.- OBTENIENDO LOS DATOS MEDIANTE IP-API.COM

Para obtener los datos mediante la API de IP-API.COM, debes acceder de esta forma:
http://ip-api.com/php/'.MI-IP donde MI-IP, es la IP Publica de mi ordenador. Por ejm seria asi: http://ip-api-com/php/208.80.152.201, el resultado seria este:

a:14:{s:6:"status";s:7:"success";s:7:"country";s:13:"United States";s:11:"countryCode";s:2:"US";s:6:"region";s:2:"CA";s:10:"regionName";s:10:"California";s:4:"city";s:13:"San Francisco";s:3:"zip";s:5:"94105";s:3:"lat";s:7:"37.7898";s:3:"lon";s:9:"-122.3942";s:8:"timezone";s:19:"America/Los_Angeles";s:3:"isp";s:20:"Wikimedia Foundation";s:3:"org";s:20:"Wikimedia Foundation";s:2:"as";s:28:"AS14907 Wikimedia US network";s:5:"query";s:14:"208.80.152.201";}

Entonces para extraer esta información que necesitamos debemos almacenarla en una array, en la cual podremos manipular para posteriormente utilizarla en lo que deseamos, seria de esta forma:

<?php $ip = $_REQUEST['REMOTE_ADDR']; // the IP address to query $query = @unserialize(file_get_contents('http://ip-api.com/php/'.$ip)); if($query && $query['status'] == 'success') { echo 'Hello visitor from '.$query['country'].', '.$query['city'].'!'; } else { echo 'Unable to get location'; } ?>

Si lo vemos con un var_dump, seria asi

array (
  'status' => 'success',
  'country' => 'COUNTRY',
  'countryCode' => 'COUNTRY CODE',
  'region' => 'REGION CODE',
  'regionName' => 'REGION NAME',
  'city' => 'CITY',
  'zip' => ZIP CODE,
  'lat' => LATITUDE,
  'lon' => LONGITUDE,
  'timezone' => 'TIME ZONE',
  'isp' => 'ISP NAME',
  'org' => 'ORGANIZATION NAME',
  'as' => 'AS NUMBER / NAME',
  'query' => 'IP ADDRESS USED FOR QUERY',
)

Aquí les dejo la tabla con los datos devueltos, en ellos incluye el ESTADO de la consulta, si es que devolvió un dato o un Error, asi como el mensaje de Error.

 

3.- Guardando INFORMACIÓN EN BASE DE DATOS:

Aquí lo que debemos hacer primero que nada es realizar la conexión a la base de datos:

@mysql_connect(DB_HOST2, DB_USER2, DB_PASSWORD2)

Luego Realizar la insercion con los datos obtenidos y almacenados en un array:

@mysql_query("INSERT INTO visitors (domain, ip, serverDate, serverTime, timeZone, userOS, userBrowser,
             userAgent, country, countryCode, city, state, lat, lon, isp, org,  asp)
             VALUES ('".$this->getSubdomain()."', '".$this->getUserIp()."', '".$this->getServerDate()."', '".$this->getServerTime()."', '".$this->getTimeZone()."',
              '".$this->getUserOs()."', '".$this->getUserBrowser()."', '".$this->getUserAgent()."', '".$this->getUserCountry()."',
               '".$this->getUserCountryCode()."', '".$this->getUserCity()."', '".$this->getUserStateOfRegion()."',
                '".$this->getLatitude()."', '".$this->getLongitude()."', '".$this->getISP()."', '".$this->getORG()."', '".$this->getAS()."')");

4.- MOSTRANDO LOS DATOS EN UNA TABLA O GOOGLE MAPS

Ahora lo único que hay que hacer es poner nuestro talento a prueba, y ver cual es la mejor forma de mostrar dicha información, la puedes hacer mediante una tabla simple, o mejor aun mostrar esa lista de visitantes mediante Google Maps. Así como mejorar la seguridad del script, y optimizarlo como por ejemplo que no se dupliquen los registros. Todo es cuestión de poner nuestro talento en uso.

 

You may also like


Valora este Artículo
Comparte si te ha Gustado
Artículos Relacionados