Créez votre site avec honolulu...
Apprendre le html
Cours de javascript
Apprendre les CSS

Connaître le nombre de connectés sur son site...  








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...