Visiteurs connectés en temps réel

Contenu du snippet

Ce script vous permettra de savoir combien de visiteurs sont connectés sur votre site.
Le script utilise la fonction session_start() : si vous êtes hébergé par Free, pensez à créer un dossier sessions à la racine du site.
Créez une table sur votre BDD Mysql nommée `connectes` avec 2 champs :
- sessid de type varchar (40)
- timestamp de type INT (15)

Source / Exemple :


<?php
	// Script réalisé par Vyk12
	
	session_start();
	
	if(isset($_GET['nbre_connectes']))
	{
		mysql_connect('serveur','login','pass');
		mysql_select_db('db');
		$sql = mysql_query('SELECT COUNT(*) AS nbre_sess FROM connectes WHERE sessid = \'' . $_REQUEST['PHPSESSID'] . '\'');
		$nbre_sess = mysql_fetch_array($sql);
		if($nbre_sess['nbre_sess'] == 0)
			mysql_query('INSERT INTO connectes VALUES (\'' . $_REQUEST['PHPSESSID'] . '\',\'' . time() . '\')');
		else
			mysql_query('UPDATE connectes SET timestamp = ' . time() . ' WHERE sessid = \'' . $_REQUEST['PHPSESSID'] . '\'');
		$timestamp_limite = time() - 2;
		mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_limite);
		$retour = mysql_query('SELECT COUNT(*) AS nbre_sess FROM connectes');
		$donnee = mysql_fetch_array($retour);
		$phrase = ($donnee['nbre_sess'] == 1) ? 'Il y a actuellement 1 personne connectée.' : 'Il y a actuellement ' . $donnee['nbre_sess'] . ' personnes connectées.';
		echo $phrase;
		mysql_close();
		exit();
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
	<head>
		<title>Compteur connectés en temps réel</title>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<meta http-equiv="Content-Language" content="fr" />
		<script type="text/javascript">
		<!--
			function nbre_connectes()
			{
				var xhr = null;
				if(window.XMLHttpRequest)
					xhr = new XMLHttpRequest();
				
				else if(window.ActiveXObject)
					xhr = new ActiveXObject('Microsoft.XMLHTTP');
				
				xhr.open('GET', 'connectes.php?nbre_connectes', true);
				
				xhr.onreadystatechange = function()
				{ 
					if(xhr.readyState == 4)
					{
						document.getElementById('connectes').innerHTML = xhr.responseText;
					}
				}
				xhr.send(null);
			}
		//-->
		</script>
	</head>
	<body onload="javascript:nbre_connectes();">
	<script type="text/javascript">
	<!--
		setInterval('nbre_connectes()', 1000);
	//-->
	</script>
		<p id="connectes">
			<noscript>
				Vous devez accepter JavaScript !
			</noscript>
		</p>
	</body>
</html>

Conclusion :


Le script marche de la manière suivante :

- Le visiteur ouvre cette page : on récupère son id de session
- On se connecte à Mysql, on regarde si sa session est déjà dedans
- Si son id est déjà dedans, on met à jour son timestamp
- Sinon on insère son id + son timestamp
- On supprime toutes les entrées dont leur timestamp n'a pas été actualisé depuis 2 secondes
- On regarde combien il y a d'entrées et on affiche ce nombre

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.