Le compteur d'utilisateurs actifs
<?php
/* démarre une session */
session_start();
/* rafraîchit la valeur atime (dernier accès) du fichier */
$_SESSION["refresh"]= "";
/* la valeur du compteur */
$count = countActiveUsers();
/* affiche le template du compteur */
include "ActiveUsersCounterTemplate.php";
/* permet de compter le nombre d'utilisateurs en ligne */
function countActiveUsers(){
$count = 0;
/* récupère les sessions enregistrées */
$sessionNames = scandir(session_save_path());
/* pour chaque sessions */
foreach($sessionNames as $sessionName) {
/* récupère le temps du dernier accès (atime) */
$last_time = stat(session_save_path() . "/" . $sessionName)[8];
/* calcul de l'intervalle */
$interval = time() - $last_time;
/* si l'intervalle est inférieur à 5 minutes (300 secondes)
* prend seulement les fichiers commencant par sess_
*/
if(startsWith($sessionName, "sess_") && $interval < 300) {
/* incrémente le compteur */
$count++;
}
}
return $count;
}
function startsWith ($string, $startString)
{
$len = strlen($startString);
return (substr($string, 0, $len) === $startString);
}
Le template (gabarit) du compteur
<!-- Badge Bootstrap -->
<span class="badge badge-success">Nombre d'utilisateurs actifs : <?= $count ?></span>
Affichage du compteur
<!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>
Commentaires
Enregistrer un commentaire