Suite aux demandes de quelques habitués du forum, je mets en ligne ce tutorial
qui vous aidera à obtenir le nombre de personnes connectées à un site...
Rappel : ce site est là pour ceux qui veulent apprendre et non pour les fan du copier-coller ;o)
Vous êtes donc censés pratiquer le PHP depuis un certain temps, y compris en liaison avec MySQL...
Rappel bis : prétendre affirmer qu'il y a X connectés sur son site est un leurre, ou à tout le moins une approximation, vous comprendrez plus tard pourquoi...
1/ Vous allez d'abord créer une table que nous nommerons "live" et qui comportera 2 champs :
create table live (
id_live SMALLINT UNSIGNED AUTO_INCREMENT,
sess VARCHAR (255) NOT NULL,
heure VARCHAR (10) NOT NULL,
primary key (id_live));
Où et comment exécuter cette requête SQL ?
En vous rendant sur votre serveur de BDD MySQL "PHPMYADMIN", tout simplement... Une fois connecté à votre
serveur, saisissez la requête comme sur l'image ci-dessous et cliquez sur "Exécuter" :
2/ Vous allez insérer dans votre page d'accueil le code PHP suivant :
<?php
session_start();
if (!session_register('ip_visiteur')){
session_register('ip_visiteur');
}
$id_connex=@mysql_connect("serveur","login","pass");
mysql_select_db("nom_de_bdd",$id_connex);
if ($ip_visiteur=="") {
$heure=time();
$ip_visiteur=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$requete="insert into live (sess,heure)
values ('$ip_visiteur','$heure')";
mysql_query($requete,$id_connex);
$requete="delete from live
where UNIX_TIMESTAMP()+0 - heure > 600";
mysql_query($requete,$id_connex);
}
else
{
$ip_visiteur=$ip_visiteur;
}
?>
3/ L'affichage se fait le plus simplement du monde par la commande suivante (en l'insérant là où vous souhaitez faire apparaître le nombre de connectés) :
<?php
$id_connex=@mysql_connect("serveur","login","pass");
mysql_select_db("nom_de_bdd",$id_connex);
$requete="select * from live";
echo mysql_num_rows(mysql_query($requete,$id_connex)),"
visiteur(s) connecté(s) !";
?>
4/ C'est tout ! Mais faîtes quand même semblant de lire les explications...
On ouvre une session avec session_start() et on vérifie si cette session existe déjà ou pas.
Si elle est vide, il y a 3 opérations successives :
- on y stocke l'heure d'arrivée et l'IP du visiteur (cela aurait pu fort bien être l'id de session (les 32 chiffres constituant le PHPSESSID).
- on insère ces données dans la table "live"
- on vérifie du même coup si dans cette même table, il n'existerait pas un ou des enregistrements plus vieux de 10 minutes (le chiffre en rouge, 600, soit 60 secondes * 10 minutes).
Si c'est le cas, on les efface purement et simplement.
Si au contraire, la session n'est pas vide, et bien on ne fait rien...
PS : naturellement, le chiffre en rouge est une variable que vous pouvez modifier.
LIMITES DE LA METHODE :
* si un internaute reste 1 minute sur le site et le quitte, il sera considéré comme toujours présent sur le site et donc comptabilisé.
* si un internaute reste 12 minutes, il sera effacé quand même du nombre des connectés.
A vous de trouver le temps moyen qui correspond à l'idée que vous vous faîtes d'un surf moyen sur un site...