Compteur de visiteurs PHP


Template

Le template (le modèle ou le gabarit) permet d'afficher la variable count. J'utilise les classes de style de Bootstrap.

<!-- Badge Bootstrap -->
<span class="badge badge-primary">Nombre de visiteurs : <?= $count ?></span>

Le compteur et le cookie

Ce code PHP permet d'enregistrer un cookie sur le terminal du client pour savoir si l'utilisateur a déjà visité le site web.

Pour la persistance, j'utilise un fichier texte avec une valeur sur une seule ligne. Vous pourriez utiliser une base de données.

<?php

/* Si le cookie n'existe pas */
if (!isset($_COOKIE["visit"])) {
    /* incrémente le compteur */
    incrementVisitCount(); 
    /* Enregistre un cookie sur le terminal du client */
    //setcookie("visit", true); /* expire quand le navigateur est fermé : Fin de session */
    setcookie("visit", true, time() +  86400); /* expire dans un jour */
}

/* la valeur du compteur */
$count = getVisitCount();

/* Affiche le template du compteur */
include "VisitCounterTemplate.php";

/* Incrémente la valeur dans le fichier visit-count.txt */
function incrementVisitCount()
{
    $count = file_get_contents("visit-count.txt");
    file_put_contents("visit-count.txt", $count + 1, LOCK_EX);
}

/* récupère la valeur dans le fichier visit-count.txt */
function getVisitCount()
{
    return file_get_contents("visit-count.txt");
}

La page web

Nous pouvons afficher le compteur en inlcuant le fichier Counter.php dans la page.

<!DOCTYPE html>
<html lang="fr">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Page</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" />
    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
</head>

<body>
    <!-- Affiche le compteur -->
    <?php include 'Counter.php' ?>
</body>

</html>

RĂ©sultat :


Commentaires