Script PHP: Visiteurs connectés
[ 66 commentaires]
Comme expliqué en préambule, nous allons créer un "compteur live" en PHP,
qui vous permettra d'afficher en temps réel le nombre de visiteurs connectés simultanément sur votre site web.
Ce script est en démonstration sur toutes les pages d'ActuLab (dans le pied de page).
Il ne nécessite pas l'utilisation de MySQL.
1- Principe de fonctionnement
Un répertoire de votre site appelé /compteur-live contiendra les deux fichiers suivants:
compteur-live.php: Ce script met à jour le fichier compteur-live.txt dans lequel sont identifiés
les visiteurs connectés sur votre site. Il est appelé, et donc exécuté, à chaque fois qu'une page de votre site est visitée.
compteur-live.txt: Ce fichier contient les informations relatives à vos visiteurs.
Pour chaque visiteur on y trouve:
- une ligne contenant son heure de connexion,
- suivie d'une ligne contenant son adresse IP.
Les visiteurs y sont classés par ordre chronologique (du plus ancien au plus récent).
Ce fichier est mis à jour par compteur-live.php à chaque fois qu'une page est chargée.
Les visiteurs qui n'ont pas chargé de page depuis plus de 5 minutes sont considérés comme déconnectés.
Cette durée est paramétrable.
2- Le fichier compteur-live.php
Ce fichier sera placé dans le répertoire /compteur-live de votre site:
<?php
// Compteur instantané (compteur live ou live counter):
// ==================================
// Ce script met à jour le fichier /compteur-live/compteur-live.txt, dans lequel sont
// identifiés les visiteurs connectés sur le site.
// Il est appelé dans l'entête de toutes les pages du site.
// -----------------------------------------------------------------------------------
// Le fichier /compteur-live/compteur-live.txt contient 2 lignes par visiteur connecté:
// - une ligne contenant son heure de connexion,
// - suivie d'une ligne contenant son adresse IP.
// Les visiteurs y sont classés par ordre chronologique:
// - de celui qui s'est connecté il y a le plus longtemps (en haut de fichier),
// - à celui qui s'est connecté le plus récemment (en bas de fichier).
// -----------------------------------------------------------------------------------
// On lit chaque ligne du fichier /compteur-live/compteur-live.txt
// dans le tableau $compteur_live
$compteur_live = file("/compteur-live/compteur-live.txt");
// -----------------------------------------------------------------------------------
// On détermine quels sont les visiteurs à éliminer
// (ceux dont la dernière connexion date de plus de 5 minutes).
$premiere_ligne_a_garder=-2; // valeur virtuelle. Sera 0 au 1er passage dans la boucle...
do { // On boucle jusqu'à trouver le premier visiteur à ne pas eliminer, ou la fin de fichier.
$premiere_ligne_a_garder=$premiere_ligne_a_garder+2; // visiteur suivant
} while((date('U', strtotime('-300 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));
// 300 secondes = 5 minutes. Cette durée est modifiable.
// -----------------------------------------------------------------------------------
// On lit l'adresse IP du visiteur qui est en train de charger une page
if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP
$ip_en_cours = $_SERVER["REMOTE_ADDR"];
}
else { // sinon
$ip_en_cours = "Non identifiable";
}
// -----------------------------------------------------------------------------------
// on reconstitue le futur contenu du fichier dans la variable $compteur
$compteur = "";
if($premiere_ligne_a_garder < count($compteur_live)) { // des visiteurs à ne pas éliminer?
// Pour tous les visiteurs inscrits dans le fichier à ne pas éliminer...
for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+2) {
// Garder ce visiteur, sauf si c'est celui qui est en train de recharger
// une page (ceci afin déviter les doublons).
if(trim($compteur_live[$i+1]) != $ip_en_cours) {
$compteur .= trim($compteur_live[$i])."\n".trim($compteur_live[$i+1])."\n";
}
}
}
// -----------------------------------------------------------------------------------
// Enfin on ajoute le visiteur qui est en train de se connecter
$compteur .= date('U')."\n".$ip_en_cours;
// -----------------------------------------------------------------------------------
// Et on écrit le tout dans le fichier
$pointeur=fopen("/compteur-live/compteur-live.txt","w");
fputs($pointeur,$compteur);
fclose($pointeur);
?>
3- Implémentation
3.1- Créez le répertoire /compteur-live à la racine de votre site.
3.2- Placez-y le fichier compteur-live.php décrit ci-dessus.
3.3- Créez un fichier compteur-live.txt vide (sans contenu). Placez-le dans le répertoire /compteur-live.
3.4- Ajoutez le code d'appel de compteur-live.php dans l'entête de toutes vos pages, avant la balise <html>:
<?php
include ("/compteur-live/compteur-live.php");
?>
4- Affichage du compteur live
Le fichier compteur-live.txt contient 2 lignes par visiteur connecté: une pour l'adresse IP, une pour l'heure de connexion.
Le nombre de visiteurs connectés sur votre site est donc la moitié du nombre de lignes du fichier compteur-live.txt.
Son affichage se fait en copiant le code suivant dans vos pages:
<?php
// Affichage du compteur instantané (compteur live ou live counter):
// ==========================================
// On lit les lignes du fichier /compteur-live/compteur-live.txt
// dans le tableau $compteur_live.
// Ce fichier contient 2 lignes par visiteur connecté. Le nombre de visiteurs connecté
// est donc la moitié du nombre de lignes du fichier.
$compteur_live = file("/compteur-live/compteur-live.txt");
echo (count($compteur_live)/2)." ";
if((count($compteur_live)/2) > 1) {
echo "visiteurs connectés";
}
else {
echo "visiteur connecté";
}
// La suite est facultative... mais nous apprécierions ;-)
echo" <a href=\"http://www.actulab.com/php--compteur-instantane.php\" target=\"_blank\" title=\"Script PHP offert par ActuLab\"><img src=\"http://www.actulab.com/images/icon.gif\" width=\"16\" height=\"9\" border=\"0\" alt=\"Script PHP offert par ActuLab\"></a>\n";
?>
5- Aller plus loin...
Maintenant que votre compteur live est en place, nous allons voir comment utiliser les informations contenues
dans le fichier compteur-live.txt pour afficher les adresses IP des visiteurs connectés
sur votre site...
Vos réactions à cet article :::
le 24/01/2004 à 20:37De:
julie
le script ne marche pas : j'ai une erreur :
Warning: main(/compteur-live/compteur-live.php): failed to open stream: No such file or directory in c:program fileseasyphp1-7wwwaccueil.php on line 11
Warning: main(): Failed opening '/compteur-live/compteur-live.php' for inclusion (include_path='.;C:Program FilesEasyPHP1-7phppear') in c:program fileseasyphp1-7wwwaccueil.php on line 11
Warning: file(/compteur-live/compteur-live.txt): failed to open stream: No such file or directory in c:program fileseasyphp1-7wwwaccueil.php on line 23
0.5 visiteur connecté
comment puis je faire?
le 24/01/2004 à 21:02De:
Jan
[Site web]
»Réponse à julie
"/compteur-live/compteur-live.php" adresse le fichier "compteur-live.php" du répertoire "compteur-live" situé A LA RACINE DU SITE. Sous easyphp, "/compteur-live/compteur-live.php" va chercher à trouver le répertoire "compteur-live" dans le répertoire de ton disque ou est installé easyphp (considéré comme la racine du site), alors que ton site se trouve probablement dans un sous répertoire de ce répertoire easyphp.
Essaie en remplaçant "/compteur-live/compteur-live.php" par "compteur-live/compteur-live.php", ça devrait résoudre le pb...
le 31/01/2004 à 13:54De:
burning
bonjour,
Voila j'ai essaye plusieurs script de live compteur sur le net dont le votre tout marche sauf que meme si je demande a quelqu'un d'autre de ce connect au site et que moi aussi je suis dessus le compteur reste tjrs a 1 comprends pas pourquoi et c'est pareil avec d'autre script avec base sql
le 31/01/2004 à 16:05De:
burning
Merci j'ai trouve mon erreur en faite je mettais mon include sur une page qui etais deja appeler par une include donc voila pourquoi le compteur reste a 1 alors que sur une page vierge il augmente enfin desole du derrangement
le 04/02/2004 à 18:59De:
arfman
apres une demi journée d essai sur ce script tj pas de succes j ai vraiment tout essayer
si quelqu un pouvait maporter la soluce ca m aidera a mieu dormir lol ..
bon aller assez rigoler ..
donc sur mon index jai bien rajouté le
<?php
include ("compteur-live.php");
?>
mais il m affiche cat:
Warning: fopen("compteur.TXT", "w") - Permission denied in /home/sites/site338/web/compteur-live.php on line 64
Warning: Supplied argument is not a valid File-Handle resource in /home/sites/site338/web/compteur-live.php on line 65
Warning: Supplied argument is not a valid File-Handle resource in /home/sites/site336/web/compteur-live.php on line 66
avec kom resultat 0 visiteur
si j enleve ce include jai pa d erreur
mais je reste a 0 visiteur !?
j attend avec impatience vos lumieres .. merci
le 05/02/2004 à 00:15De:
Jan
[Site web]
»Réponse à arfman
Cette page n'est pas un forum d'entraide.
Nous serons dans l'obligation de supprimer tout futur message de demande d'aide.
En cas de problème avec l'implémentation de ce script, vous pouvez nous les adresser par email, ou vous faire aider sur un forum pour webmaster (salon PHP). Par exemple
alhtml.
Pour ton problème, essaie ce que je proposais à Julie qqs messages plus haut.
Merci.
le 05/02/2004 à 15:05De:
arfman
arf. .. :(
le 09/02/2004 à 16:16De:
Zork
[Site web]
Et sinon vois les CHMODs du répertoire parent de ton fichier, ainsi que ceux du fichier lui-même (généralement le second bouton de la souris dans ton client FTP). Donne les droits d'écriture autrement effectivement tu ne pourra pas écrire. ;)
le 11/02/2004 à 17:18De:
arfman
j en ai deja entendu parler effectivement mais je vois pa ou c ?merci de la reponse
le 11/02/2004 à 17:29De:
arfman
ha nan c bon ! jai trouvé ou c t ! :) merci encore ! ;)
...longue vie a zork...
le 27/02/2004 à 10:47De:
Alkapote
[Site web]
Très bon script! rien à dire... c'est nickel et beaucoup plus facile à mettre en oeuvre que 99% des autres scripts de compteur live disponible sur le net!!
le 29/02/2004 à 12:10De:
steal
salut j ai un ptit probleme le script fonctionne mais comment peut on faire pour que le membre ne soit pa un visiteur ? car il confon les 2 ex: 80 membres é 80 visiteurs
merci pour votre aide
le 17/03/2004 à 14:36De:
SETIF
[Site web]
Merci pour ce script bien pratique...
Bravo a actulab
le 24/03/2004 à 13:03De:
JuL
Excellent mise à part le raffraichissement... En effet lorqu'un utilisateur raffraichit sa page, il écrit 2 lignes vides dans le fichier .txt au dessus de l'ip de l'utilisateur en question, du coup lorsqu'il lit le fichier .txt, il voit 4 lignes et affiche 2 au compteur.
le 24/03/2004 à 14:56De:
JuL
Je viens de corriger cette petite erreur :
Dans le fichier .php, il faut initialiser $premiere_ligne_a_garder à -1; et non à -2
@+
le 27/03/2004 à 12:50De:
Fen-X
[Site web]
Je suis désolé de vous demander de l'aide mais je n'en ai absolument pas trouvé autre part.
/compteur-live/compteur-live.php a la racine du site
lorsque je met le code php include dan
/articles/serveur_ftp.php
le fichier n'est pas trouvé :
Warning: main(/compteur-live/compteur-live.php): failed to open stream: No such file or directory in /home/pcaide/www/articles/serveur_ftp.php on line 3
Warning: main(): Failed opening '/compteur-live/compteur-live.php' for inclusion (include_path='.:/usr/local/lib/php') in /home/pcaide/www/articles/serveur_ftp.php on line 3
Les messages deja posté ne m'ont pas aidé ! dsl et merci
le 27/03/2004 à 14:24De:
christian
Bonjour
apres avoir installe vos differents scripts... j'obtiens sur la page les caracteres suivant ? J'arrive pas a comprendre ?
n"; ?>
le 20/04/2004 à 10:31De:
cocou
Si je désires ne pas changer l'extension de mes fichiers html en php comment je pourrais faire pour utiliser ce code:<?php
include ("/compteur-live/compteur-live.php");
?>
erci de me répondre
le 30/04/2004 à 13:24De:
Un ange passe!
reponse a cocou tu ne peux pas la page doit etre compiler par le serveur php (sauf si tu ton propore serveur et que tu configure celui si pour qu'il prennent en compte les page html comme des pages de script php...
peace and happiness for every man.....
le 19/05/2004 à 23:39De:
dragon2
à chaque fois que je me connecte la première fois, j'ai ce message d'erreur.
Notice: Undefined offset: 0 in d:easyphpwwwdragon2cptcptlive.php on line 24
1 visiteur connecté
le 29/05/2004 à 22:44De:
a_badr82
»Réponse à christian
Le php se compile sur le serveur cad si ton ordi ne possede pas un serveur ou il y'a php installer ton ordi ne pourra pas lire le code PHP. installe par exemple IIS ( serveur par defaut de windows) + installe PHP et normalement ça resoudra le prob
le 29/05/2004 à 22:50De:
a_badr82
»Réponse à dragon2
c juste que ton prog PHP est configurer à afficher toute les "WARNING" et les "NOTICES" pour l'enlever cherche PHP.INI sur ton ordi ouvre le et change la ligne "error_reporting = E_ALL " par " error_reporting = E_ALL & ~E_NOTICE" et normalement les NOTICES vont disparaitre.
le 11/06/2004 à 21:14De:
franck
Bonjour a tous
j'ai installer le script ( simple test ) sur ma page d'accueil et il compte la premiere ip et apres si une autre personne se connect sur ma page il affiche mon ip et juste mon ip
et le 2em pb une fois qu'il a enregistre mon ip dans le .txt il affiche tjrs la meme ip et pas les nouvelles
merci pour votre aide
franck
mon mail
phpbbadmin@free.fr
le 12/06/2004 à 22:19De:
franck
[Site web]
suite de mon post juste au dessus
j'ai de nouveau essayer (je vide le txt ) et le pb est que apres la premiere connection il affiche mon ip il enregistre bien l'ip dans le txt
et apres plus rien ...si je change ip ( reboot de ma freebox ) il affiche tjrs l'ancienne ip
j'avais oublier de dire que j'etais chez FREE y a t'il une cause a effet
j'ai une question
pour l'histoire du repertoire compteur-live
j'ai creer un repertoire compteur-live a la racine de mon repertoire donc :
http://monsite.free.fr/compteur-live
pour la configuration des pages exemple :
$compteur_live = file("/compteur-live/compteur-live.txt");
je doit mettre quoi
/compteur-live/compteur-live.txt
./compteur-live/compteur-live.txt
./compteur-live.txt
et sur toute mes pages ou juste sur certainnes ( actuelement je suis en ./compteur-live.txt
merci de votre aide
le 20/08/2004 à 12:12De:
Thierry
//C'est pas un peu plus obre comme çà ??
if(isset($_SERVER["REMOTE_ADDR"]))
{
if(!is_writable($_SERVER["DOCUMENT_ROOT"]."/compteur")){die("Impossible d'exécuter le script: ".$_SERVER["DOCUMENT_ROOT"]."/compteur pas accessible en écriture.");}
if(is_file($_SERVER["DOCUMENT_ROOT"]."/compteur/compteur.txt")){$line=file($_SERVER["DOCUMENT_ROOT"]."/compteur/compteur.txt","r");}
for($i=0;$i<count($line);$i++)
{
$cli=explode(";",trim($line[$i]));
$t=(time()-120);
if ($cli[0]>$t && $cli[1]!=$_SERVER["REMOTE_ADDR"])
{
$compteur.=$line[$i]."n";
}
else if ($cli[0]>$t && $cli[1]==$_SERVER["REMOTE_ADDR"])
{
$compteur.=time().";".$cli[1]."n";
}
}
if (!ereg($_SERVER["REMOTE_ADDR"],$compteur))
{
$compteur.=time().";".$_SERVER["REMOTE_ADDR"];
}
$compteur=str_replace("nn","n",$compteur);
$pointeur=fopen($_SERVER["DOCUMENT_ROOT"]."/compteur/compteur.txt","w+");
fwrite($pointeur,trim($compteur));
fclose($pointeur);
}
le 23/08/2004 à 11:22De:
Manu TEBOL
Salut à tous, il est indéniable que ce script est fantstique. Etant donné que je ne suis encore que novice en php, j'aimerai savoir comment faire pour afficher le compteur sur toutes mes pages ? merci.
le 23/08/2004 à 14:16De:
Thierry
En général, il est pratique de diviser tes pages en 3 fichiers: le haut (jusqu'à la balise <body>), le milieu, et la fin (A partir de la fermeture du </body>).
Ensuite, toutes les pages de ton site commencent par l'appel du fichier du haut de page (avec la commande "include"), et finissent par l'appel du fichier de la fin de page.
Comme celà, tu peux mettre dans le fichier de haut de page des instructions qui seront valables pour tout ton site.
le 24/08/2004 à 22:15De:
Manu
[Site web]
Merci Thierry, mon site est encore en chantier je suivrai ton conseil
le 30/08/2004 à 17:12De:
kivyn
Warning: file(../compteur-live/compteur-live.txt): failed to open stream: No such file or directory in d:program fileseasyphp1-7wwwkevin_siteadminbrowseproduit.php on line 10
0.5 visiteur connecté
VOILA CE QU IL ME MARQUE COMME ERREUR , QUE FAIRE ???
MERCI e-mail: kivyn@hotmail.com
le 01/09/2004 à 15:42De:
Thierry
Il faut que tu crées le fichier /compteur-live/compteur-live.txt et que tu lui appliques les droits 777.
le 18/10/2004 à 23:55De:
tricepha
Bonsoir,
Le compteur ne semble pas fonctionner depuis que je l'ai transferé dans mon site. En effet aux pieds des pages il apparaît : " n"; ?>. Dites-moi comment faire pour disparaître cela? Et le nombre de connectés n'est pas affiché?
le 20/11/2004 à 03:46De:
A3nigma
Vraiment du beau travail, simple, claire, rapide .... excelent script, merci
le 25/11/2004 à 18:36De:
yann
Warning: main(/compteur-live/compteur-live.php): failed to open stream: No such file or directory in c:program fileseasyphp1-7wwwoptionindex1.php on line 2
Warning: main(): Failed opening '/compteur-live/compteur-live.php' for inclusion (include_path='.;C:Program FilesEasyPHP1-7phppear') in c:program fileseasyphp1-7wwwoptionindex1.php on line 2
Voila mon erreur , pourtant j ai bien suivit les indications
Si quelqu'un peu m 'aider meci d avance
le 26/11/2004 à 18:24De:
chris
[Site web]
il apparait " n"; ?>. et je ne sé pas pourquoi il y a une erreur
répond s'il te plait!
merci d'avance
le 29/11/2004 à 01:34De:
mel-k
[Site web]
»Réponse à yann
salut yann,
si t'as mis le compteur-live.php dans le repertoire compteur-live il faut que tu change la 17 et 64 de ton script au lieu de /compteur-live/compteur-live.txt comme cela comme t deja dans le repertoire tu laisse juste ceci je t donne les deux lignes :ligne17 ==>$compteur_live = file("compteur-live.txt"); et ligne 64 ==> $pointeur=fopen("compteur-live.txt","w");
le 29/11/2004 à 01:40De:
mel-k
[Site web]
»Réponse à chris
salut chris,
pour que je puisse t'aider laisse un peut plus de detaille sur les erreurs mais je pense que t'as voulu personnalisé le script en enlevant l'aide tt simplement. voila voilou ;)
le 29/11/2004 à 01:42De:
mel-k
[Site web]
bon courage a tous sympa le script bravo ;)
le 30/11/2004 à 15:35De:
Sylfeline
Bonjour, malgré les explications claires ;) ma nulité donne ceci à l'affichage du compteur :
n"; ?>
Pouvez vous me dire où est mon erreur ?
merci :)
le 30/11/2004 à 15:38De:
Sylfeline
je n'avais pas vu que Chris avais la meme erreur.
Et je n'ai absolument rien modifié j'ai fais que des copier-coller ;)
Il y a qu'un truc où je suis pas sur de moi c'est la création du fichier php
j'ai mit le script dans body d'un fichier htlm et je l'ai enregistrer en php ....
le 02/12/2004 à 02:25De:
mel-k
[Site web]
»Réponse à Sylfeline
bon je t'explique comment l'enregistrer tu ouvre une page html vide tu colle tout le script dedans tu l'enregiste sous compteur-live.php ensuite dans le meme repertoire tu creer un document texte et tu l'enregistre sous compteur-live.txt ensuite à la ligne 17 et 64 tu verifie le chemin de ton fichier texte (j'ai deja mis le chemin exacte plus haut).
voici le script en entier avec l'affichage d'ip:
<?php
// Compteur instantané (compteur live ou live counter):
// ==================================
// Ce script met à jour le fichier /compteur-live/compteur-live.txt, dans lequel sont
// identifiés les visiteurs connectés sur le site.
// Il est appelé dans l'entête de toutes les pages du site.
// -----------------------------------------------------------------------------------
// Le fichier /compteur-live/compteur-live.txt contient 2 lignes par visiteur connecté:
// - une ligne contenant son heure de connexion,
// - suivie d'une ligne contenant son adresse IP.
// Les visiteurs y sont classés par ordre chronologique:
// - de celui qui s'est connecté il y a le plus longtemps (en haut de fichier),
// - à celui qui s'est connecté le plus récemment (en bas de fichier).
// -----------------------------------------------------------------------------------
// On lit chaque ligne du fichier /compteur-live/compteur-live.txt
// dans le tableau $compteur_live
$compteur_live = file("compteur-live.txt");
// -----------------------------------------------------------------------------------
// On détermine quels sont les visiteurs à éliminer
// (ceux dont la dernière connexion date de plus de 5 minutes).
$premiere_ligne_a_garder=-2; // valeur virtuelle. Sera 0 au 1er passage dans la boucle...
do { // On boucle jusqu'à trouver le premier visiteur à ne pas eliminer, ou la fin de fichier.
$premiere_ligne_a_garder=$premiere_ligne_a_garder+2; // visiteur suivant
} while((date('U', strtotime('-300 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));
// 300 secondes = 5 minutes. Cette durée est modifiable.
// -----------------------------------------------------------------------------------
// On lit l'adresse IP du visiteur qui est en train de charger une page
if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP
$ip_en_cours = $_SERVER["REMOTE_ADDR"];
}
else { // sinon
$ip_en_cours = "Non identifiable";
}
// -----------------------------------------------------------------------------------
// on reconstitue le futur contenu du fichier dans la variable $compteur
$compteur = "";
if($premiere_ligne_a_garder < count($compteur_live)) { // des visiteurs à ne pas éliminer?
// Pour tous les visiteurs inscrits dans le fichier à ne pas éliminer...
for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+2) {
// Garder ce visiteur, sauf si c'est celui qui est en train de recharger
// une page (ceci afin déviter les doublons).
if(trim($compteur_live[$i+1]) != $ip_en_cours) {
$compteur .= trim($compteur_live[$i])."n".trim($compteur_live[$i+1])."n";
}
}
}
// -----------------------------------------------------------------------------------
// Enfin on ajoute le visiteur qui est en train de se connecter
$compteur .= date('U')."n".$ip_en_cours;
// -----------------------------------------------------------------------------------
// Et on écrit le tout dans le fichier
$pointeur=fopen("compteur-live.txt","w");
fputs($pointeur,$compteur);
fclose($pointeur);
?>
<?php
// Affichage des adresses IP des visiteurs connectés:
// ================================
// Ce script lit le fichier /compteur-live/compteur-live.txt, dans lequel sont
// identifiés les visiteurs connectés sur le site.
// -----------------------------------------------------------------------------------
// Le fichier /compteur-live/compteur-live.txt est créé et mis à jour par le "compteur
// live" présenté à http://www.actulab.com/script-php--visiteurs-connectes.php.
// Ce script nécessite donc l'installation préalable du "compteur live".
// -----------------------------------------------------------------------------------
// On lit chaque ligne du fichier /compteur-live/compteur-live.txt dans le tableau
// $compteur_live pour pouvoir afficher les adresses IP des visiteurs.
$compteur_live = file("compteur-live.txt");
// -----------------------------------------------------------------------------------
// Le fichier /compteur-live/compteur-live.txt contient 2 lignes par visiteur connecté:
// - une ligne contenant son heure de connexion,
// - suivie d'une ligne contenant son adresse IP.
// Le nombre de visiteurs connecté est donc la moitié du nombre de lignes du fichier.
$nb_de_visiteurs = count($compteur_live)/2;
// -----------------------------------------------------------------------------------
// On lit l'adresse IP du visiteur qui est en train de charger la page pour pouvoir
// l'identifier parmi les visiteurs connectés
if(isset($_SERVER["REMOTE_ADDR"])) { // Si on peut déterminer l'adresse IP
$ip_en_cours = $_SERVER["REMOTE_ADDR"];
}
else { // sinon
$ip_en_cours = "Non identifiable";
}
// -----------------------------------------------------------------------------------
// On affiche le nombre de visiteurs connectés
echo "Il y a ".$nb_de_visiteurs;
if($nb_de_visiteurs > 1) {
echo " visiteurs connectés sur le site. Leurs adresses IP sont:";
}
else {
echo " visiteur connecté sur le site.";
if($nb_de_visiteurs == 1) {
echo " Son adresse IP est:";
}
}
echo "<br>n";
// -----------------------------------------------------------------------------------
// On affiche les adresses IP de tous les visiteurs
for($i=0; $i<$nb_de_visiteurs; $i++) {
echo"- <a href="http://www.ripe.net/perl/whois? form_type=simple&full_query_string=&searchtext=".$compteur_live [2*$i+1]."&do_search=Search" target="_blank" title="+ d'infos sur cette adresse IP...">".$compteur_live[2*$i+1]."</a>";
// On détermine la présence de robots des moteurs de recherche parmi les visiteurs
$google1 = strpos($compteur_live[2*$i+1],"216.239.46");
$google2 = strpos($compteur_live[2*$i+1],"64.68.8");
$scooter1 = strpos($compteur_live[2*$i+1],"216.39");
$scooter2 = strpos($compteur_live[2*$i+1],"209.73");
$slurp = strpos($compteur_live[2*$i+1],"66.196");
$voila = strpos($compteur_live[2*$i+1],"195.101.94");
$fast = strpos($compteur_live[2*$i+1],"66.77.73");
$msn = strpos($compteur_live[2*$i+1],"204.95.98");
if(($google1 !== false) || ($google2 !== false)) {
echo" <a href="http://www.google.com/bot.html" target="_blank" title="Le robot de Google. + d'infos...">[Googlebot]</a>";
}
elseif(($scooter1 !== false) || ($scooter2 !== false)) {
echo" <a href="http://www.robotstxt.org/wc/active/html/scooter.html" target="_blank" title="Le robot de Altavista. + d'infos...">[Scooter]</a>";
}
elseif($slurp !== false) {
echo" <a href="http://www.inktomi.com/slurp.html" target="_blank" title="Le robot de Inktomi. + d'infos...">[Slurp]</a>";
}
elseif($voila !== false) {
echo" <a href="http://aide.voila.fr/Recherche/?Robots" target="_blank" title="Le robot de Voilà. + d'infos...">[VoilaBot]</a>";
}
elseif($fast !== false) {
echo" <a href="http://fast.no/us/products/fast_web_search/crawler_faq" target="_blank" title="Le robot de Fast. + d'infos...">[Fast Web Crawler]</a>";
}
elseif($msn !== false) {
echo" <a href="http://search.msn.com/msnbot.htm" target="_blank" title="Le robot de MSN. + d'infos...">[MSNBot]</a>";
}
else{}
// On identifie le visiteur en cours parmi tous les visiteurs connectés
if($compteur_live[2*$i+1] == $ip_en_cours) {
echo" (c'est vous!)";
}
echo"<br>n";
}
?>
le 02/12/2004 à 02:34De:
mel-k
[Site web]
»Réponse à Sylfeline
encore un detail pour t dire d'ou il vient le n"; ?>
à la fin de ton script t'as ceci
}
echo"<br>n";
}
?>
echo = affiche en gros
le 04/12/2004 à 12:26De:
Red Rabbit
J'avais le même probleme que Julie,
Donc j'ai changé "/compteur-live/compteur-live.php" par "compteur-live/compteur-live.php"
sur toutes mes pages et sur mon index qui indique le nombre de connecté ...
Le probleme c'est que maintenant, il écrit 0,5 visiteurs en ligne quand je passe sur l'index !!!
Mes questions :
Faut il changer toutes les pages .html de mon site (qui on l'include) en .php ???
Mon probleme ("/compteur-live/compteur-live.php" que j'ai changé en "compteur-live/compteur-live.php") etait sur easyphp, faudra il ue je remette le chemin normalement quand mon site sera sur le web ???
Merci d'avance
le 07/01/2005 à 21:18De:
djstefx
[Site web]
merci pour ce code php. ce compteur fonctionne trés bien. Encore merci !!
le 30/01/2005 à 17:37De:
pilou
[Site web]
Peux t on l'insérer avec FONTPAGE, car j'ai essayé et ça ne fonctionne pas. Comment faire et Merci pour votre aide.
le 14/02/2005 à 17:26De:
yoman
Merci de votre script, mais un petit souci :
Il affiche 6.5 visiteurs ????
Merci de votre aide
le 14/02/2005 à 17:28De:
yoman
[Site web]
Pourtant, j'ai changer tout les chemins par compteur-live/compteur-live.php et compteur-live/compteur-live.txt......
le 14/02/2005 à 17:58De:
yoman
Merci de votre script, mais un petit souci :
Il affiche 6.5 visiteurs ????
Merci de votre aide
le 21/02/2005 à 10:13De:
Pyrr@h !
[Site web]
Pour le moment j ai rien qui s affiche... Si vous pouviez me dire si j ai pas fais d erreurs : allez sur
- http://videomediafrance.site.voila.fr/compteur_live/compteur_live.php
- http://videomediafrance.site.voila.fr/compteur_live/publique.php (affichage)
- http://videomediafrance.site.voila.fr/compteur_live/compteur_live.txt
Merci d'avance
le 21/02/2005 à 10:25De:
Pyrr@h !
[Site web]
S'il vous plaît pourriez vous me donnez les codes à mettre dans chaques pages et à quels emplacements sachant que mon repertoire s appelle compteur_live (mon hébérgeur n accepte pas les tirets -). Merci d'avance.
le 06/03/2005 à 16:29De:
Bidule
Enfin quelque chose de complet et pas de la (passez moi l'expression) pignolette à deux balles, car j'en ai essayé des scripts.....
Ca a fonctionné relativement vite chez moi, quelques ptits reglages et zou....
Juste un mot : NICKEL !
Merci.
le 06/03/2005 à 18:14De:
Bidule
Juste en passant, voici ma maigre participation.
Ce bout de code permet de mettre le total des visites
1-Créer un fichier txt nommé compteur-total.txt et le mettre au même endroit que le fichier compteur-live.txt
Dans compteur-live.php
CHERCHER : ?>
avant AJOUTER
/---MODULE SUPPLEMENTAIRE --------------------------------------------------------------
//lecture et incrementation du compteur total
$filename = "compteur-total.txt"; //eventuellement corriger le chemin
$handle = fopen($filename,"r+");
$nbvisites= fgets($handle,11);
$nbvisites++;
fseek($handle,0);
fputs($handle,$nbvisites);
fclose($handle);
//--- FIN DU MODULE SUPPLEMENTAIRE --------------------------------------------------------------
Dans votre page où l'affichage se fera
<?
$filename = "compteur-total.txt"; // eventuellement corriger le chemin
$handle = fopen("compteur-total.txt","r"); //
$value = fread($handle,filesize($filename));
echo "le site a été visité ";
echo ($value)." ";
echo "fois depuis le 01/01/2005";
fclose($handle);
?>
N-Joy la room
@++
le 11/03/2005 à 10:48De:
goal4net
[Site web]
bonjour,
je trouve ce script super !! J'ai juste dû le désinstaller suite à un petit soucis d'adaptation.
Toutefois, j'ai constaté à plusieurs reprises que parfois, le compteur gardé en mémoire de vieux visiteurs, ce qui fait qu'au lieu d'avoir 10 visiteurs, il affiche 300 visiteurs !!
Quelqu'un sait pourquoi ?
Et encore merci pour ce super script.
le 13/03/2005 à 21:26De:
quentin croenne
[Site web]
Simpa le!!!!!!!!!!!!!!!!!!!
indication: Pour qu'il marche G du renommer mes .html .php
avec easyphp g du remplacer un peu parout /compteur-live/compteur-live.php par
compteur-live/compteur-live.php
noublié pas de faire ca parout!!!!!!!!!!
le 11/04/2005 à 00:19De:
François
Merci pour le code tres bien.
Sur sme 5.6 retirer --/compteur-live/compteur-live.txt--en--compteur-live/compteur-live.txt
partout sur le compteur-live.php, sur la page index.php etne pas oublier l'include.
le 15/04/2005 à 02:31De:
angy7
Merci beaucoup pour ces scripts: ils sont très pratiques à utiliser. Longue vie à Actulab.com.
Bidule, j'ai également intégré ton code mais ce compteur total s'incrémente à chaque page visitée (peut-être une mauvaise manip de ma part!): peut-on l'incrémenté pour chaque IP différente pour éviter les redondances ? Egalement, y’a-t-il une astuce pour récupérer et sauvegarder (dans un autre .txt) toutes les valeurs qui passent dans « compteur-live.txt » ?
le 19/05/2005 à 13:39De:
foobar
terrible, cela fonctionne à merveille.
le 31/08/2005 à 15:08De:
phanoucart
[Site web]
Salut à tous, je suis dégoutée car si je vous li tout fonctionne bien, alors que chez moi (free), il affiche tjs 1. alors que j'ai connecté plusieur poste!!!. je ne comprend pas .
sinon j'ai remplacer partout "/compteur-live/compteur-live.txt" par "compteur-live/compteur-live.txt", j'ai un fichier INDEX.PHP avec CSS qui simule des frames.
est-ce à cause de cela?
le 11/10/2005 à 18:14De:
alamut167
salut,
j'ai repris le script de mel-k et j'ai un petit problème, au niveau du echo, il confond le http://www.xxx comme du commentaire à cause du double slash.
Auriez-vous une solution ?
echo" <a href="http://www.robotstxt.org/wc/active/html/scooter.html" target="_blank" title="Le robot de Altavista. + d'infos...">[Scooter]</a>";
}
le 27/10/2005 à 20:32De:
Cyrille
Salut à tous !
Je suis débutant en la matière de php, et j'essaie d'inclure dans un site ce script : je pense avoir bien suivi les info en créant un dossier compteur-live avec dedans un fichier "compteur-live.php" contenant :
<?php
$compteur_live = file("/compteur-live/compteur-live.txt");
$premiere_ligne_a_garder=-2;
do {
$premiere_ligne_a_garder=$premiere_ligne_a_garder+2; // visiteur suivant
} while((date('U', strtotime('-300 seconds')) > $compteur_live[$premiere_ligne_a_garder]) && ($premiere_ligne_a_garder < count($compteur_live)));
if(isset($_SERVER["REMOTE_ADDR"])) {
$ip_en_cours = $_SERVER["REMOTE_ADDR"];
}
else {
$ip_en_cours = "Non identifiable";
}
$compteur = "";
if($premiere_ligne_a_garder < count($compteur_live)) {
for($i=$premiere_ligne_a_garder; $i<count($compteur_live); $i=$i+2) {
if(trim($compteur_live[$i+1]) != $ip_en_cours) {
$compteur .= trim($compteur_live[$i])."n".trim($compteur_live[$i+1])."n";
}
}
}
$compteur .= date('U')."n".$ip_en_cours;
$pointeur=fopen("/compteur-live/compteur-live.txt","w");
fputs($pointeur,$compteur);
fclose($pointeur);
?>
ET un second fichier compteur-live.txt vide.
Mon index.htm contient :
<?php
include ("/compteur-live/compteur-live.php");
?>
<html>
<head>
<title>Site de Cyrille</title>
<?php
$compteur_live = file("/compteur-live/compteur-live.txt");
echo (count($compteur_live)/2)." ";
if((count($compteur_live)/2) > 1) {
echo "visiteurs connectés";
}
else {
echo "visiteur connecté";
}
echo" <a href="http://www.actulab.com/php--compteur-instantane.php" target="_blank" title="Script PHP offert par ActuLab"><img src="http://www.actulab.com/images/icon.gif" width="16" height="9" border="0" alt="Script PHP offert par ActuLab"></a>n";
?>
</head>
<body>
SALUT
</body>
</html>
ET CA NE FONCTIONNE PAS, voilà ce qui s'affiche :
1) { echo "visiteurs connectés"; } else { echo "visiteur connecté"; } echo" "Scriptn"; ?> SALUT
Merci de votre aide
le 30/10/2005 à 17:18De:
warrhaine
moi je suis sous easyphp g un peu le mem probleme que julie mais la racine de mon site c le dossier "www" et non la racine de mon disque g vérifié les chemins ca me semble bon et pourtant "Warning: file(/compteur-live/compteur-live.txt): failed to open stream: No such file or directory in d:easyphp1-8wwwcompteur.php on line 9
0.5 visiteur connecté "
le 26/08/2007 à 21:37De:
vizsla
je voudrais a savoir sion peut mettre aussi sur 1 blog??
le 27/08/2007 à 21:57De:
neoloop
[Site web]
bonjour.
merci pour ce code, qui marche super bien. en faite je n'ai aps d'erreur, mais j'ai toujour 0 en nombre de personne connecté.
je sais que ce n'ai pas la que je dois poser des questions, mais si une personne peut m'aider, merci d'avance
mon site: http://www.mboulenger.fr
Ajoutez un commentaire en direct :::
Il est temporairement impossible de poster un commentaire: nos modos sont en vacances. A bientôt;)