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
Enregistrer un commentaire