Contador de visitas reales con MySQL para Geeklog

La finalidad de este pequeño tutorial, es crear un contador de visitas reales, lo que significa que solo se registrará una visita al día por cada IP, independientemente de las veces que se refresque la página, para ello haremos uso de una tabla adicional que agregaremos a la base de datos existente. En esta tabla agregaremos los campos más básicos para registrar las visitas, aunque esto se puede ampliar para darle otros usos, por ejemplo guardar el país de procedencia de nuestros visitantes.

Los pasos a seguir serán estos:

  1. 1. Crear la tabla para el contador
  2. 2. Modificar el archivo donde se declaran las bases de datos
  3. 3. Crear el script contador
  4. 4. Activar el contador en Geeklog
  5. 5. Usar el contador y mostrar las visitas

 

Crear la tabla para el contador

Como acostumbren modificar sus tablas, yo lo hago a través de phpmyadmin.

CREATE TABLE IF NOT EXISTS `gl_counter` (
  `id` double NOT NULL auto_increment,
  `ip` varchar(15) NOT NULL default '',
  `date` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`id`)
);

 

Modificar el archivo donde se declaran las bases de datos

Este archivo es el archivo lib-database.php, que se encuentra dentro del system (del "Core"), aproximadamente en la línea 122 agregar:

$_TABLES['counter'] = $_DB_table_prefix . 'counter';

 

Script del contador

Este es el código que registrará las visitas únicas en la base de datos, se recomienda crearlo dentro de un directorio adicional, por ejemplo  contador.

contador.php

<?php
 /* 
 *      contador.php
 *      
 *      Copyright 2009 Tereso Ramos G <tramos@d-webstudio.net>
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *      
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *      
 */

$ip = $_SERVER['REMOTE_ADDR'];

$result = DB_query("SELECT * FROM {$_TABLES['counter']} WHERE ip = '".$ip."'");
$nrows = DB_numRows( $result );
    if( (mysql_num_rows($result)) == 0){
        DB_query("INSERT INTO {$_TABLES['counter']} (ip,date) VALUES ('".$ip."', CURDATE())");;
    }
	
   else{
	$result = DB_query("SELECT * FROM {$_TABLES['counter']} WHERE ip = '".$ip."' AND date = CURDATE()");
	$nrows = DB_numRows( $result );
	    if( (mysql_num_rows($result)) == 0){
		DB_query("INSERT INTO {$_TABLES['counter']} (ip,date) VALUES ('".$ip."', CURDATE())");
	    }
   }

?>

 

Activar el contador en Geeklog

Bastará con agregar la siguiente linea en alguna parte del archivo lib-common.php, preferentemente en la linea 279.

/**
* Contador
*/
require_once( $_CONF['path_html'] . 'contador/contador.php' );  //o el nombre que le hayan dado

 

Usar el contador y mostrar las visitas

Este se puede hacer de muchas formas, bastará con hacer una consulta a la tabla para ver el número de registros que tiene y este serán las visitas totales, se puede actividar desde una página estática, pasarlo a través de una variable al header.thtml o footer.thtml o desde un bloque (usaremos esto).

function phpblock_counter() {
   global $_TABLES;

   $result = DB_query("SELECT * FROM {$_TABLES['counter']}");
   $count = DB_numRows( $result);
   $retval .= 'Visitas: ';
   $retval .= number_format($count,0);

   return $retval;
}

Como podrán observar es muy simplemente de implementar y como se indico al inicio del tutorial, únicamente efectua la función de contar las visitas, más adelante le agregaremos algunas otras funciones. Si tiene dudas, no duden en dejar sus comentarios.


Seguimiento

TURL de seguimiento para esta entrada: http://www.d-webstudio.net/trackback.php/contador-visitas-geeklog

No hay seguimientos para esta entrada.

0 comentarios