5.1kvistas

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.

 

Shares