Titre: Affichage des connectés
Date: Juin 2004
Language: PHP / MySQL
Description: Ce code permet d’afficher les connectés (càd ayant effectué une action sur le site durant les x dernières minutes)
Pour commencer, création de la table MySQL:
CREATE TABLE `connectes` (<br /> `ip` varchar(20) NOT NULL default '',<br /> `derniere` int(9) unsigned NOT NULL default '0',<br /> `pseudo` varchar(32) NOT NULL default '',<br /> PRIMARY KEY (`ip`)<br />) TYPE=MyISAM;
La fonction a appeler au début des pages:
<?php
// fonction a appeler au début de vos pages
function connectes()
{
// minutes pendant lesquelles un utilisateur est considéré comme actif
$temps = 5;
// connection
if( mysql_connect( BDD_HOST, BDD_PSEUDO, BDD_PASS ) )
mysql_select_db( BDD_BDD );
else
return false;
// ip du client --> à améliorer selon besoin
$ip = $_SERVER['REMOTE_ADDR'];
// pseudo, si une session peut exister à ce nom
$pseudo = empty( $_SESSION['nom'] ) ? '' : $_SESSION['nom'];
// timestamp actuel
$time = time( );
// on recherche l'utilsateur
$result = mysql_query("SELECT * FROM connectes where ip='$ip'");
if(!$result)
return false; // erreur mysql
// si l'utilisateur n'est pas deja dans la table
if(mysql_num_rows($result) == 0)
{
$result = mysql_query( "INSERT INTO connectes VALUES ('$ip', '$time', '$pseudo')" );
if(!$result)
return false;
}
else // mise-à-jour
{
$result = mysql_query( "UPDATE connectes SET derniere='$time', pseudo='$pseudo' WHERE ip='$ip'" );
if(!$result)
return false;
}
// temps d'incativité
$time -= $temps * 60;
// on supprime ceux qui n'ont pas été connectés depuis assez longtemps
$result = mysql_query( "DELETE LOW_PRIORITY FROM connectes WHERE derniere <= $time" );
mysql_close();
}
?>
Affichage des connectés, à mettre où vous voulez 🙂
<?php
$stop = false;
if( mysql_connect( BDD_HOST, BDD_PSEUDO, BDD_PASS ) )
mysql_select_db( BDD_BDD );
else
$stop = true;
if( !$stop )
{
// récupération connectés
$result = mysql_query( "SELECT pseudo FROM connectes WHERE pseudo <> ''" );
if( !$result )
$stop = true;
else
{
echo '<font color="#0000FF">Connectés:</font><br>';
while( $connecte = mysql_fetch_array( $result) )
echo $connecte[0] . '<br>';
}
}
if( !$stop)
{
// visiteurs non connectés
$result = mysql_query( "SELECT count(*) FROM connectes WHERE pseudo = ''" );
if( $result )
{
$visiteurs = mysql_fetch_array($result);
echo '<br><font color="#0000FF">Visiteurs:</font><br>' . $visiteurs[0];
}
}
mysql_close();
?>
Laisser un commentaire