Xanetiz > Programmation > Placer des statistiques en PHP sur son site
Si vous voulez afficher pour tous vos visiteurs ou simplement pour vous des informations sur votre site, cet article peut vous être utile. Nous allons voir l'affichage du nombre de requêtes SQL, le temps de chargement, le nombre de personnes actuellement sur le site et le nombre de visites du site.
Il faudra utiliser le langage de programmation dynamique PHP ainsi que le SGBD (Système de Gestion de Base de Données) MySQL.
La méthode est très simple, il suffit de déclarer une variable $nombreRequete au début de votre page et de l'initialiser à 0, puis de l'incrémenter (augmenter de 1) à chaque fois que vous faites appel à une requête SQL, soit mysql_query dans le cas de MySQL. Ensuite, affichez la variable à la fin de la page.
Nous allons utiliser la fonction PHP microtime() qui retourne le timestamp actuel en microsecondes. Le timestamp correspond au temps écoulé depuis le premier janvier 1970. Il permet de sauvegarder une date. Par exemple, si vous postez un message sur un forum, votre timestamp sera sauvegardé. Il va ensuite permettre d'afficher la date à laquelle le message a été posté.
Le principe est simple : nous allons sauvegarder le timestamp au début de la page et à la fin, et nous allons afficher la différence. Pour ça il suffit de placer ce code tout en haut de votre page :
$microtime = explode(' ', microtime());
$debut = $microtime[0] + $microtime[1];
L'affichage d'un site étant relativement rapide, il est préférable d'utiliser une fonction qui renvoie des microsecondes pour une meilleure précision. Microtime() renvoie les microsecondes et le timestamp séparés par un espace. Il est nécessaire d'ajouter les deux pour avoir la partie décimale.
Placez ensuite à la fin de votre page ceci :
$microtime = explode(' ', microtime());
$fin = $microtime[0] + $microtime[1];
Il suffit maintenant de faire la différence entre $fin et $debut. Pour ça nous allons utiliser la fonction number_format() qui permet de personnaliser l'affichage du nombre. Il faut placer ce morceau de code après les deux premiers. Voilà ce que ça va donner :
$temps = number_format($fin - $debut, 3, ',', '');
echo $temps;
Le premier paramètre est le nombre à afficher, le deuxième est le nombre de chiffres après la virgule (ici 3) et le troisième est le choix du séparateur entre la partie entière et la partie décimale. Nous allons choisir la virgule . Quant au dernier paramètre, il est inutile dans notre cas.
Il va falloir tout d'abord avoir une table nommée online avec deux champs : IP et temps. Ensuite, il nous faut récupérer l'IP avec la variable $_SERVER['REMOTE_ADDR'] et la convertir en un nombre entier :
$i = explode('.', $_SERVER['REMOTE_ADDR']);
$ip = $i[0] + $i[1] * 256 + $i[2] * 65536;
Nous pouvons maintenant créer la limite en secondes (60 * 5 minutes) :
$limite = time() - 300;
Ainsi, à chaque fois que la page est chargée, nous allons comparer la limite et le timestamp des visiteurs enregistrés dans la table online. Si la limite est supérieur au timestamp d'une ou plusieurs entrées : on considère que le visiteur est partis et on supprime son entrée dans la table.
Si la personne a au contraire cliqué à nouveau sur un lien, son IP est déjà présente dans la base : il faut donc la supprimer pour la réinsérer ensuite. La deuxième requête insère une entrée dans la table et la troisième compte le nombre d'entrées pour afficher le nombre de personnes actuellement sur le site, ce que nous voulons. Cela donne au final :
mysql_query('DELETE FROM online WHERE temps < '.$limite.' OR ip = '.$ip);
mysql_query('INSERT INTO online VALUES('.$ip.', '.time().')');
$r = mysql_query('SELECT COUNT(*) AS nombreConnecte FROM online');
$d = mysql_fetch_array($r);
echo 'Nombre de personnes actuellement sur le site : '.$d['nombreConnecte'];
Il y a comme partout plusieurs façons de procéder. Ici, nous allons voir comment compter le nombre approximatif de visites du site. Ce n'est pas le nombre de visiteurs unique. Une même personne peut visiter plusieurs fois le site et donc à chaque fois augmenter le compteur.
Il faut un fichier texte qui va contenir le nombre de visites, et un code PHP à insérer sur la page d'accueil. Placez ce fichier à la racine de votre site. Si le nom est compteur.txt, on aura :
$fichier = fopen('compteur.txt', 'r+');
$pv = fgets($fichier);
$pv++;
fseek($fichier, 0);
fputs($fichier, $pv);
fclose($fichier);
Il est préférable de placer ce code sur l'index de votre site car c'est la seule page qu'un visiteur affichera forcément et théoriquement une seule fois.
Titre | Vu | Date | |
---|---|---|---|
L'essentiel du langage XHTML | 6 081 | 13/03/10 | |
Placer un copyright sur ses images en PHP | 6 097 | 04/04/12 | |
L'essentiel du CSS | 7 413 | 14/03/10 | |
Exécuter un script PHP en ligne de commande | 9 044 | 04/04/12 | |
L'essentiel du langage C | 17 813 | 14/03/10 |
Nombre d'inscrits : 262
Dernier membre : Clyderar
Visiteurs en ligne : 14
Membres en ligne : Aucun
Copyright © 2022 Xanetiz.com - Tous droits réservés