Connectés (utilisation de mysql)

Contenu du snippet

Ce code sert à afficher la liste des connectés sur le site.

On stoque l'ip du visiteur, son pseudo (s'il est logé) et sa date de dernière visite

Source / Exemple :


/*
Création de la table MySQL
CREATE TABLE `connectes` (
  `ip` varchar(20) NOT NULL default '',
  `derniere` int(9) unsigned NOT NULL default '0',
  `pseudo` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`ip`)
) TYPE=MyISAM;

  • /
// fonction a appeler au début de vos pages function connectes() { $temps = 5; if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS)) mysql_select_db(BDD_BDD); else return; // ip du client $ip = $_SERVER['REMOTE_ADDR']; // pseudo $pseudo = empty($_SESSION['nom']) ? '' : $_SESSION['nom']; // time actuel $time = time(); // on recherche l'utilsateur $sql_query = "SELECT * FROM connectes where ip='$ip'"; $result = mysql_query($sql_query); if(!$result) return; // si l'utilisateur n'est pas deja dans la table if(mysql_num_rows($result) == 0) { $sql_query = "INSERT INTO connectes VALUES ('$ip', '$time', '$pseudo')"; $result = mysql_query($sql_query); if(!$result) return; } // mise-à-jour else { $sql_query = "UPDATE connectes SET derniere='$time', pseudo='$pseudo' WHERE ip='$ip'"; $result = mysql_query($sql_query); if(!$result) return; } // temps d'incativité $time -= $temps * 60; // on supprime ceux qui n'ont pas été connectés depuis assez longtemps $sql_query = "DELETE LOW_PRIORITY FROM connectes WHERE derniere <= $time"; $result = mysql_query($sql_query); mysql_close(); } // Affichage des connectés, à mettre ou vous voulez ;-) $stop = 0; if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS)) mysql_select_db(BDD_BDD); else $stop = 1; if(!$stop) { $sql_query = "SELECT pseudo FROM connectes WHERE pseudo <> ''"; $result = mysql_query($sql_query); if(!$result) $stop = 1; else { echo '<font color="#0000FF">Connectés:</font><br>'; while($connecte = mysql_fetch_array($result)) echo $connecte[0] . '<br>'; } } if($stop == 0) { $sql_query = "SELECT count(*) FROM connectes WHERE pseudo = ''"; $result = mysql_query($sql_query); if($result) { $visiteurs = mysql_fetch_array($result); echo '<br><font color="#0000FF">Visiteurs:</font><br>' . $visiteurs[0]; } } mysql_close();

Conclusion :


-----------------------------
Voici ce qu'il faut changer:
-----------------------------
Dans la fonction connectes:
- $temps = 5; // nombre de minute d'inactivité avant de supprimer un membre de la liste des connectes
- if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS))
mysql_select_db(BDD_BDD); // informations de connection à mysql
- Pour le pseudo du visiteur, j'utilise une variable de session nommée nom, vous pouvez changer la ligne suivante:
$pseudo = empty($_SESSION['nom']) ? '' : $_SESSION['nom'];

Script d'affichage:
if(mysql_connect(BDD_HOST, BDD_PSEUDO, BDD_PASS))
mysql_select_db(BDD_BDD);

Voilà, j'attends vos commentaires

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.