ElTicus.com

Programación, lenguajes y recursos para programadores

código fuente
Como ponerle un contador de visitas a tu sitio en menos de 5 minutos.
Ejemplo práctico
Publicado por JL Fecha: 2006-12-16 01:20:00 Idioma: Español Tipo de documento: código fuente
Descargar como PDF

Como ponerle un contador de visitas

a tu sitio en menos de 5 minutos


A continuación veremos como implementar rápidamente un contador de visitas en una página Web.

Necesitamos:


  • Contar con una base de datos de MYSQL
  • Un editor de código fuente.

PROCEDIMIENTO

El procedimiento consta de 3 pasos que son:

Paso 1: Vamos a crear la tabla donde se registrarán las entradas, dicha base de datos contendrá 3 campos que son: id (campo llave, auto-incrementable), direccion_ip (cadena) y fecha (fecha-hora).
Se puede generar esta tabla con cualquier administrador de base de datos o se puede utilizar el siguiente script:

CREATE TABLE visitas (
  id int(4) unsigned NOT NULL auto_increment,
  direccion_ip varchar(16) default NULL,
  fecha datetime NOT NULL default '0000-00-00',
  PRIMARY KEY  (`id`)
);

Paso 2: Vamos a crear las funciones que controlarán el registro de una visita y que nos devolverán la cantidad de visitantes. Estas funciones se recomienda que se coloquen en un archivo de funciones que se pueda llamar al inicio de la página con la sentencia:

require_once(mis_funciones.php);

Y dentro de "mis_funciones.php" tendremos el siguiente código:

<?php
// Datos de Conexión con la Base de Datos MySQL 
  define('HOST','localhost', 1);
  define('USER','user',    1);
  define('PSWD','pasword',    1);
  define('BASE','basededatos',    1);
/* ----------------------------------------------------------
   Función que devuelve el número de visitas recibidas desde
     una fecha en particular  
------------------------------------------------------------- */

function Contar_Visitas($conx, $aniodesde, $mesdesde, $diadesde )
{
   $sql="select count(*) from visitas 
         where fecha >= '$aniodesde-$mesdesde-$diadesde'"
;
    $result= mysql_query($sql,$conx) or die(mysql_error());
    if($row = mysql_fetch_array($result))
    {
      return $row[0];
    }
    else
     return(0);
}
/* ----------------------------------------------------------
   Función que registra una visita. 
   Es recomendable que el $IDUSER sea la IP para que de este 
   modo se registren visitas únicas, pero puede ser 
   también el SESSION_ID para registrar varias entradas del
   mismo usuario.
------------------------------------------------------------- */

function Registrar_Visita($conx, $IDUSER)
{
 $fecha=date('Y-m-d H:i:s'); // Fecha y hora actual
  /* --------------------------------------------------
    Primero hacemos una consulta para ver si ese mismo
    usuario ya está registrado el día de hoy.
    ------------------------------------------------- */

 $sql="select * from visitas 
       where direccion_ip='$IDUSER' 
         and year(fecha)=year(CURDATE()) 
         and month(fecha)=month(CURDATE()) 
         and DAYOFMONTH(fecha)=DAYOFMONTH(CURDATE())"
;
 $result= mysql_query($sql,$conx) or die(mysql_error());
 if(mysql_num_rows($result)==0) // Registrar la visita
 {
  $sql="INSERT INTO visitas VALUES(NULL,'$IDUSER','$fecha')";
  mysql_query($sql,$conx) or die(mysql_error());
 }
}

NOTA: No olvides actualizar los datos de conexión a la base de datos de acuerdo a tu propia base.

Paso 3: Vamos a mandar llamar las funciones escritas anteriormente desde la página donde queramos poner el contador. Esto lo hacemos con dos segmentos de código que se presentan a continuación. La primera parte carga las funciones y abre la base de datos, la segunda registra la visita y pone el resultado del conteo:

 
<?PHP
 //------- cargar las funciones -------
  require_once("mis_funciones.php");
 //------- abrir la base de datos------
  $conx = mysql_connect (HOST,USER,PSWD) or die (mysql_error()); 
  mysql_select_db(BASE) OR die("Connection Error to Database"); 
?> 

...

<?PHP
  //------- Poner el contador ----------
  Registrar_Visita($conx, $HTTP_SERVER_VARS['REMOTE_ADDR']);
  echo "<b>".Contar_Visitas($conx, date("Y"), date("m"), date("d")).
       "</b> visitas el día de hoy. ";
  echo "<b>".number_format(Contar_Visitas($conx, 2006, 1, 1 ),0)
       "</b> visitas totales.";  
?>

El resultado se verá similar a esto:

12 visitas el día de hoy. 431 visitas totales.



Observaciones:

Nótese que las visitas totales se están poniendo a partir del 1 de enero de 2006 pero que se puede indicar cualquier fecha que se desee.

Ventajas Desventajas


  • Es muy simple y fácil de comprender e implementar.



  • No nos proporciona información acerca de las secciones en las que entra el usuario.
  • No registra entradas múltiples del mismo usuario el mismo día.
  • No registra el tiempo que permanece el usuario en nuestro sitio.

Se le podría mejorar:


  • El acceso a la base de datos se podría optimizar mediante sesiones.
  • Se podría registrar tambien el $_SERVER["HTTP_REFERER"] para saber desde donde está ingresando el usuario.
  • Agregarle un campo donde se registre la sección a que entran los usuarios.




Nadie ha puesto ningún comentario todavía


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =




No hay comentarios

Artículos relacionados:
Tip Como agregar un campo ID a una tabla y hacerlo llave primaria al mismo tiempo Recurso no clasificado Solución al error: Client does not support authentication protocol requested by server. Tip Como recuperar los primeros N caracteres de un campo de texto sin enters ni tabuladores. código fuente Generar una tabla HTML desde una Base de Datos MYSQL Manual Aprende como funcionan los JOINS en SQL
Recurso no clasificado Aprendiendo MySQL con PHP Truco Conteo Condicionado en Mysql