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. Crear la tabla para el contador
- 2. Modificar el archivo donde se declaran las bases de datos
- 3. Crear el script contador
- 4. Activar el contador en Geeklog
- 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.





