Contador mejorado para páginas PHP

Valoración del artículo:
Script del contador PHP que almacena el número mes de la última visita, el número de visitas en el mes y las visitas totales.
Publicado: 22/10/03
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Dadas mis necesidades he tenido que modificar el script del contador simple para páginas PHP, y me gustaría compartirlo con todos vosotros. La diferencia está en que ahora almacena tres datos en el archivo que hace de contador:

0) el número de mes de la última visita
1) el número de visitas del mes
2) el número de visitas totales

El script queda como sigue:

function interface_contador(){

    $archivo = "contador.txt";
    $info = array();

    //comprobar si existe el archivo
    if (file_exists($archivo)){
       // abrir archivo de texto y introducir los datos en el array $info
       $fp = fopen($archivo,"r");
       $contador = fgets($fp, 26);
       $info = explode(" ",$contador);
       fclose($fp);

       // poner nombre a cada dato
       $mes_actual = date("m");
       $mes_ultimo = $info[0];
       $visitas_mes = $info[1];
       $visitas_totales = $info[2];
    }else{
       // inicializar valores
       $mes_actual = date("m");
       $mes_ultimo = "0";
       $visitas_mes = 0;
       $visitas_totales = 0;
    }

    // incrementar las visitas del mes según si estamos en el mismo
    // mes o no que el de la ultima visita, o ponerlas a cero
    if ($mes_actual==$mes_ultimo){
       $visitas_mes++;
    }else{
       $visitas_mes=1;
    }
    $visitas_totales++;

    // reconstruir el array con los nuevos valores
    $info[0] = $mes_actual;
    $info[1] = $visitas_mes;
    $info[2] = $visitas_totales;

    // grabar los valores en el archivo de nuevo
    $info_nueva = implode(" ",$info);
    $fp = fopen($archivo,"w+");
    fwrite($fp, $info_nueva, 26);
    fclose($fp);

    // devolver el array
    return $info;
}


Este código devuelve un array cuando es llamado, con 3 elementos (el mes actual, visitas del mes, visitas totales) que cada uno puede utilizar como quiera.

Por cierto, me olvidaba decir que he añadido una cláusula condicional que verifica si existe el archivo $contador en el directorio de la página, previamente a ser leído. Lo he hecho para evitar que diera error la primera vez que se ejecutaba el script. De esta forma, ya no hace falta preocuparse por poner en el servidor un archivo $contador a cero antes de ejecutar el código por primera vez.

Se puede ver el ejemplo en marcha en esta página. También se puede descargar el código de la página del ejemplo, con la función y una sencilla muestra de cómo utilizarla.

Comentarios
Fueron enviados 20 comentarios al artículo
18 comentarios no revisados
2 comentarios revisados:
Por: Jose Luis Perez
08/4/05
A ver, me gustaría aportar mi granito de arena a esta comunidad.

Resulta que quería implementar un contador para una página web que estoy desarrollando, pero no me acababan de convencer los que hay aquí porque no son del todo realistas. Es decir que si el mismo usuario entra varias veces en la página o la recarga el contador también aumenta, y esto no me parecía razonable, así pensé en idear uno nuevo basándome en los que hay aquí pero haciendo uso de las variables de sesión que implementa php. Este ejemplo solo actualiza el contador si no se ha creado una sesion, seguramente ya haya algo parecido circulando por ahí, pero me pareció que sería interesante publicarlo aquí. Bien, el script es el siguiente:


function contador()
{
//El nombre del archivo donde se guardara el valor del contador, permisos 666 ;)
$file = "contador.txt";
//Si existe la variable de sesion, simplemente leemos el valor que hay en el archivo
if (isset($_SESSION['contador']))
{
$fid = fopen($file, "r") or die ("No se ha podido acceder al contador.");
while (!feof($fid))
{
$count .= fgetc($fid);
}
fclose($fid);
//devolvemos el valor obtenido del fichero
return $count;
}
//Si no existe la variable de sesion, la creamos y le asignamos cualquier valor
else
{
$_SESSION['contador']=1;
//Primero leemos el valor del contador
$fid = fopen($file, "r") or die ("No se ha podido acceder al contador.");
while (!feof($fid))
{
$count .= fgetc($fid);
}
fclose($fid);
//Ahora incrementamos en 1 el valor del contador y actualizamos el fichero
$count++;
$fid = fopen($file, "w+") or die ("No se puede acceder al contador.");
fwrite($fid, $count);
fclose($fid);
//devolvemos el valor del contador
return $count;
}
}

Bien esto es todo, espero que os sea útil. Aclarar que para que funcione se debe hacer uso de las sesiones, es decir que hay que llamar a session_start() en algún lugar de la página. De todos modos se puede implementar de forma parecida con cookies en vez de con variables de sesion, si es necesario también puedo postearlo.

Un saludo
Por: Edu Córdoba
02/8/05
Cuando desde una misma página, se ofrece distintos servicios que se quiere contabilizar, además de las propias. Estos contadores han de incluirse también en las páginas o archivos ofrecidos. Y hace laborioso tener por cada uno de los contadores un archivo de apunte.

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo