Page 1 sur 1

Connaitre le nombre de visiteurs sur son site

Posté : 16 janv. 2008, 19:38
par VaN
Bonsoir,

je cherche la manière la plus simple de connaître le nombre de visiteurs uniques sur son site, à un instant T.

Je viens de fouiller un peu le net, il y'a foule de script de ce genre, mais utilisant une base de données, alors ça donne pas vraiment envie de s'y intéresser.

je cherche à connaitre cette info pour une page de statistiques, sur une interface d'administration. Il faut donc que je puisse récupérer le nombre total de visiteurs uniques sur la totalité d'un site, pour afficher ce nombre sur une page de l'interface admin.

Existe t'il un moyen de faire ça très simplement, en quelques lignes de code ?

Posté : 16 janv. 2008, 19:43
par Elie
Euh bah non tout se fait avec des bases de données !

Ici il y a des version sans MySQL apparement
http://www.phpscripts-fr.net/recherche. ... b[]=script

Posté : 16 janv. 2008, 21:44
par netsupra
Salut,
au mieux tu peux utiliser un fichier, c'est assez simple :
<?php
if(!isset($_SESSION['already_visited']
{
  $_SESSION['already_visited'] = true;
  $nbvisiteurs = get_file_contents('nbvisiteurs.txt');
  $handle = fopen('nbvisiteurs.txt', 'w');
  fwrite($handle, $nbvisiteurs++);
  fclose($handle);
}
?>
A mettre sur la page d'accueil. Ca compte le nombre d'affichages de la page par des visiteurs unique.
Si ce n'est pas deja fait, mettre un session_start(); en haut de la page.

Netsupra

Posté : 16 janv. 2008, 23:18
par VaN
Ce n'est pas vraiment ce que je cherche. Si je comprend bien le script, il va me donner le nombre total de visiteur. Ce que je recherche, c'est le nombre de visiteur sur le site à un instant T.

Posté : 17 janv. 2008, 00:08
par iclo
Une piste de réponse ici, ce n'est pas exactement la même demande, mais les idées y sont ;)
http://www.phpfrance.com/forums/voir_su ... site-0.php

Posté : 17 janv. 2008, 00:15
par Ryle
Et une idée comme ça, si tu ouvres une session pour chaque utilisateur connecté et que tu comptes le nombre de fichier dans le dossier des sessions ? T'aurais le nombre de connecté à l'instant T, au délai d'expiration de la session près...

Posté : 17 janv. 2008, 01:05
par VaN
Et une idée comme ça, si tu ouvres une session pour chaque utilisateur connecté et que tu comptes le nombre de fichier dans le dossier des sessions ? T'aurais le nombre de connecté à l'instant T, au délai d'expiration de la session près...
Oui, j'y ai pensé. Mais ce n'est pas tout à fait ce que je cherche. cette technique me donnerait le nombre de personnes authentifiées sur le site. je cherche à connaitre le nombre de visiteurs (authentifiés, ou non), à cet instant T.

Posté : 17 janv. 2008, 02:13
par Elie
Tu cree des fichiers qui s'appelle

time()-ip.txt

et tu fais une vérification de chaque fichier qui contient time() et qui effacer tout ceux avant time();

Voila c'est debile mais mec "Instant T !"

Posté : 17 janv. 2008, 10:05
par dogmongo
Moi je te recommande fortement le scripte de Matthieu Chevalier, il est très bien, je l'ai adapté à un site perso pour permettre de savoir qui est on line (chat de discutions) parmit les membre du site , mais à la base il permet très bien de connaitre la présence des visiteurs par leur ip.

Posté : 17 janv. 2008, 10:06
par dogmongo

Posté : 17 janv. 2008, 10:59
par Ryle
Oui, j'y ai pensé. Mais ce n'est pas tout à fait ce que je cherche. cette technique me donnerait le nombre de personnes authentifiées sur le site. je cherche à connaitre le nombre de visiteurs (authentifiés, ou non), à cet instant T.
Une session, c'est juste un espace en mémoire sur le serveur, ça n'est pas innévitablement lié à une authentification :)

Démarres une session avec session_start() dans toutes tes pages (je ne sais plus s'il faut mettre au moins une valeur pour que le fichier de session soit créé, mais rien ne t'empêche de coller un $_SESSION['online'] = 'kowabunga' ;)) et hop, tous les visiteurs de ton sites (authentifiés, ou non), ont une fichier session qu'il te suffit de compter pour savoir combien ils sont :)

Maintenant selon la précision que tu veux donner à ton T, une info en base ou dans un fichier avec l'heure exacte de dernier accès à une page du site sera nécessairement plus précis :)

Posté : 21 janv. 2008, 17:45
par VaN
Oui, j'y ai pensé. Mais ce n'est pas tout à fait ce que je cherche. cette technique me donnerait le nombre de personnes authentifiées sur le site. je cherche à connaitre le nombre de visiteurs (authentifiés, ou non), à cet instant T.
Une session, c'est juste un espace en mémoire sur le serveur, ça n'est pas innévitablement lié à une authentification :)

Démarres une session avec session_start() dans toutes tes pages (je ne sais plus s'il faut mettre au moins une valeur pour que le fichier de session soit créé, mais rien ne t'empêche de coller un $_SESSION['online'] = 'kowabunga' ;)) et hop, tous les visiteurs de ton sites (authentifiés, ou non), ont une fichier session qu'il te suffit de compter pour savoir combien ils sont :)

Maintenant selon la précision que tu veux donner à ton T, une info en base ou dans un fichier avec l'heure exacte de dernier accès à une page du site sera nécessairement plus précis :)
Ok je vois un peu le genre. Ce dont je m'aperçois, c'est que tout le monde me parle de logger les heures, et ça ne correspond pas du tout à ce que je m'imaginais dans ma tête. Je vais tenter d'expliquer comment je voyais je truc, pour que vous puissiez pointer mon erreur de reflexion.

J'ai ma page d'admin, où je souhaite afficher le nombre de visiteurs à un instant T (ce que j'apelle l'instant T, c'et en fait le moment ou cette page d'admin se charge, et où ce nombre de visiteurs s'affiche). Donc à cet instant T, la fonction qui va calculer le nombre de visiteurs se lance, calcule (d'une manière ou d'une autre, je ne sais pas encore comment) le nombre de visiteurs sur le site, à cet instant précis. Disons qu'il est de 53. 2 secondes plus tard, 2 visiteurs quittent le site. Evidemment je ne le sais pas, jusqu'au moment ou je recharge la page, qui à ce nouvel instant T, m'affiche qu'il y'a 51 visiteurs sur le site.

Là ou je ne comprends pas bien, c'est en quoi le fait de logger les dates peut m'aider. Où est l'erreur dans ma reflexion ?

Posté : 21 janv. 2008, 18:00
par Ryle
En fait, techniquement un utilisateur se connecte à ton site pendant quelques secondes le temps que le navigateur charge les données à afficher et ça s'arrête là. Tu ne peux connaitre le nombre de visiteur à la seconde près puisqu'ils ne restent pas connectés de manière continue et effectueront une nouvelle connexion au serveur au prochain rechargement ou changement de page ou appel au serveur via ajax, etc.

Donc en gros, à moins d'une appli (flash, etc.) ou d'un thread et d'une connexion "permanente" avec le serveur, tu ne peux pas savoir précisément combien il y a d'utilisateurs "connectés" à ton site à un instant T.

Afin de compenser cela, on va considérer que l'utilisateur passe un certain temps sur chacune de tes pages avant d'en changer et de réappeller le serveur (prenons arbitrairement 2 minutes). En stockant l'heure (à la seconde près) de dernier accès à la page d'un visiteur, tu peux ainsi savoir combien ont ouvert une page il y a moins de 2 minutes et sont - potentiellement - encore "connectés" à ton site :)

Voilà pourquoi on te recommande d'horodater les connexions. Avec les sessions c'est à peu près le même principe, leur durée de vie est de 15 minutes. Tant que l'utilisateur se ballade sur le site, le chronomètre est réinitialisé, s'il laisse s'écouler plus de 15mn sans appel au serveur, la session est perdue, l'utilisateur n'est plus comptabilisé :)

Posté : 21 janv. 2008, 18:25
par VaN
Super explication, je comprend parfaitement maintenant le besoin de prendre en compte le datetime de la dernière requête. Je vais réfléchir à tout ça donc.