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