Cómo implementar un contador global de visitantes en PHP.


En este tutorial, vamos a aprender cómo implementar un contador global de visitantes en PHP.

<?php

namespace Codelaby\EventDateGenerator;

class CounterVisitors
{
    private $filename = "counter.txt";
    private $sessionId;
    private $sessionStart;

    public function __construct()
    {
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }
        if (!isset($_SESSION['sessionId'])) {
            $this->sessionId = md5(uniqid(rand(), true));
            $_SESSION['sessionId'] = $this->sessionId;
            $this->sessionStart = time();
            $this->hitCounter();
        } else {
            $this->sessionId = $_SESSION['sessionId'];
            if (!isset($_SESSION['sessionStart'])) {
                $this->sessionStart = time();
            } else {
                $this->sessionStart = $_SESSION['sessionStart'];
            }
            if (time() - $this->sessionStart > 60) {
                $this->sessionStart = time();
                $this->hitCounter();
            }
        }
        $_SESSION['sessionStart'] = $this->sessionStart;
    }

    private function saveCounter($counter = 0)
    {
        if (!file_exists($this->filename)) {
            touch($this->filename);
        }
        $fp = fopen($this->filename, "w");
        if (!flock($fp, LOCK_EX)) {
            return;
        }
        fwrite($fp, $counter);
        flock($fp, LOCK_UN);
        fclose($fp);
    }

    public function readCounter()
    {
        if (!file_exists($this->filename)) {
            touch($this->filename);
        }
        $fp = fopen($this->filename, "r");
        if (!flock($fp, LOCK_EX)) {
            return;
        }
        $file_size = filesize($this->filename);
        if ($file_size <= 0) {
            $counter = 0;
        } else {
            $counter = intval(fread($fp, $file_size));
        }
        flock($fp, LOCK_UN);
        fclose($fp);
        return $counter;
    }

    public function hitCounter()
    {
        $counter = $this->readCounter();
        $counter++;
        $this->saveCounter($counter);
        return $counter;
    }

    public function resetCounter($counter = 0)
    {
        $this->saveCounter(0);
    }
}

La clase llamada «CounterVisitors» que se encargará de llevar el registro de las visitas al sitio web. Esta clase tendrá varios métodos:

  1. El método constructor: Este método se ejecutará automáticamente cada vez que se instancie la clase. En él, vamos a comprobar si el usuario tiene una sesión activa o no. Si no tiene una sesión activa, generaremos una nueva ID de sesión para el usuario y aumentaremos el contador de visitas. Si ya tiene una sesión activa, comprobaremos si han pasado más de 60 segundos desde su última visita. Si es así, volveremos a aumentar el contador de visitas.
  2. El método readCounter: Este método se encargará de leer el archivo en el que se guarda el contador de visitas.
  3. El método saveCounter: Este método se encargará de guardar el contador de visitas en un archivo.
  4. El método hitCounter: Este método se encargará de aumentar el contador de visitas cada vez que un usuario visite el sitio web.
  5. El método resetCounter: Este método se encargará de reiniciar el contador de visitas.

Su uso

Para utilizar esta clase, primero debemos incluir el archivo donde se encuentra la clase en cualquier página en la que deseemos contar las visitas. Luego, podemos crear una nueva instancia de la clase en cualquier lugar de nuestro código donde queramos contar una visita.

Por ejemplo, si queremos contar las visitas en la página principal de nuestro sitio web, podemos agregar el siguiente código al comienzo de nuestro archivo index.php:

<?php
require_once 'path/to/CounterVisitors.php';
$counter = new CounterVisitors();

Con esto, cada vez que alguien visite la página principal de nuestro sitio web, se ejecutará el método hitCounter de la clase CounterVisitors y se aumentará en uno el contador de visitas.

También podemos utilizar los otros métodos de la clase para leer el contador de visitas actual o reiniciarlo. Por ejemplo, si queremos mostrar el número de visitas en una página, podemos utilizar

Anuncio publicitario

Publicado por Codelaby

Mobile DevDesigner

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: