Contador de Visitas

Añadir un contador de visitas html a su página web


Como añadir un contador de visitas html a tu página web, el contador más avanzado para llevar estadísticas completas de los accesos a tu página web. Con este contador de visitas puedes obtener todos los datos relacionados con el usuario que visita tu web: IP del visitante, longitud, latitud, ciudad, código postal, hora de conexión y tiempo en cada página que pasa.


index.php

<!DOCTYPE html>
<html>
  <head>
    <title>Contador de visitas</title>
  </head>
  <body>
    /* Si existe la sessión de usuario añadir user_id para asociar visita a este usuario */
    <input type="hidden" id="sessionuser" value="">
    <h1>Contador!</h1>
  </body>
  <script src="//code.jquery.com/jquery.min.js"></script>
  <script src="contador-de-visitas.js"></script>
</html>



contador-de-visitas.js

var u='contador.php';$.ajax({type:"POST",url:u,data:{key:document.domain,web:window.location.href,usuario:$('#sessionuser').val()}});$(window).bind('beforeunload',function(){$.ajax({type:"POST",url:u,data:{key:document.domain,web:window.location.href,type:1}})});var myVar=setInterval(function(){myTimer()},60000);function myTimer(){$.ajax({type:"POST",url:u,data:{key:document.domain,web:window.location.href,usuario:$('#sessionuser').val(),type:2}})}



contador.php

<?php
  // CONEXION MYSQL
  $host_db = "localhost";
  mysql_connect('localhost', 'usuario', 'password');
  mysql_select_db('basededatos');
  mysql_query("SET NAMES 'utf8'");
        
  // FUNCIONES
  function get_real_ip(){
    if (isset($_SERVER["HTTP_CLIENT_IP"])){
      return $_SERVER["HTTP_CLIENT_IP"];
    }elseif (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
      return $_SERVER["HTTP_X_FORWARDED_FOR"];
    }elseif (isset($_SERVER["HTTP_X_FORWARDED"])){
      return $_SERVER["HTTP_X_FORWARDED"];
    }elseif (isset($_SERVER["HTTP_FORWARDED_FOR"])){
      return $_SERVER["HTTP_FORWARDED_FOR"];
    }elseif (isset($_SERVER["HTTP_FORWARDED"])){
      return $_SERVER["HTTP_FORWARDED"];
    }else{
      return $_SERVER["REMOTE_ADDR"];
    }
  }
  function obtenerdominio($dominio){
    $dominio = trim($dominio);
    $dominio = str_replace(array("http://", "www."),'',$dominio);
    $dominio = explode("/", $dominio);
    $dominio = $dominio[0];
    return $dominio;
  }
  function obtenerpagina($dominio){
    $dominio = explode("/",$dominio);
    return end($dominio);
  }
  // FIN FUNCIONES
  
  $ipadress   = get_real_ip();
  $hostname   = gethostbyaddr($ipadress);
  $useragent  = $_SERVER['HTTP_USER_AGENT'];
  $keyweb     = $_POST['key'];
  $web        = obtenerdominio($_POST['web']);
  $pagina     = obtenerpagina($_POST['web']);
  $usuario    = $_POST['usuario'];
  $type       = intval($_POST['type']);/*0 entrada, 1 salida*/
            
  if($keyweb==$web){
    $str_datos  = file_get_contents("http://api.ipinfodb.com/v3/ip-city/?key=45abd2951ee0a74973b579544185c02820ca02a4a692f615786a68d9e7e8903a&ip=".$ipadress."&format=json");
    $datos      = json_decode($str_datos,true);
    $ciudad     = $datos["cityName"];
    $pais       = $datos["countryName"];
    $cp         = $datos["zipCode"];
    $latitud    = $datos["latitude"];
    $longitud   = $datos["longitude"];
    $time       = $datos["timeZone"];

    if(empty($type)){
      $reg = mysql_query("INSERT INTO contador (ip, host, navegador, ciudad, pais, cp, latitud, longitud, time, fecha, usuario, web, pagina, type) VALUES ('$ipadress', '$hostname', '$useragent', '$ciudad', '$pais', '$cp', '$latitud', '$longitud', '$time', NOW(), '$usuario', '$web', '$pagina', '0')") or die(mysql_error());
    }else{
      $reg = mysql_query("INSERT INTO contador (ip, host, navegador, ciudad, pais, cp, latitud, longitud, time, fecha, usuario, web, pagina, type) VALUES ('$ipadress', '$hostname', '$useragent', '$ciudad', '$pais', '$cp', '$latitud', '$longitud', '$time', NOW(), '$usuario', '$web', '$pagina', '$type')") or die(mysql_error());
    }
  }
}



mysql.sql

  DROP TABLE IF EXISTS `contador`;
  CREATE TABLE `contador` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `ip` varchar(20) DEFAULT NULL,
    `host` varchar(50) DEFAULT NULL,
    `navegador` varchar(250) DEFAULT NULL,
    `ciudad` varchar(50) DEFAULT NULL,
    `pais` varchar(20) DEFAULT NULL,
    `cp` varchar(6) DEFAULT NULL,
    `latitud` varchar(15) DEFAULT NULL,
    `longitud` varchar(15) DEFAULT NULL,
    `time` varchar(9) DEFAULT NULL,
    `fecha` datetime NOT NULL,
    `usuario` int(11) NOT NULL,
    `web` varchar(100) DEFAULT NULL,
    `pagina` varchar(100) DEFAULT NULL,
    `type` int(2) NOT NULL,
    PRIMARY KEY (`id`)
  ) ENGINE=MyISAM DEFAULT CHARSET=utf8;