Afficher la liste des membres connectés

Soyez le premier à donner votre avis sur cette source.

Snippet vu 20 278 fois - Téléchargée 26 fois

Contenu du snippet

Je cherchais depuis deux jours comment afficher la liste des membres connectés sur mon site. J'ai enfiin trouvé la solution optimale.
La plupart des codes que j'ai trouvé sur le Net ont besoin de créer une table qui stocke la liste des utilisateurs connectés, ou pire, des fichiers texte qui stockent ces infos.
De plus il faut sans cesse mettre cette table ou ces fichiers texte à jour.
Et pour finir, les codes trouvés faisaient au moins 50 lignes !

Alors un sentiment de révolte s'est emparé de moi, et j'ai mis au point un système vraiment bête (ie EXTREMEMENT simple) que je n'ai vu pour l'instant nulle part.

Admettons que vous ayez une table cotenant la liste des membres inscrits sur votre site, du style
CREATE TABLE `registered_users` (
`ID` int(10) NOT NULL auto_increment,
`pseudo` text collate latin1_general_ci NOT NULL,
`password` text collate latin1_general_ci NOT NULL,
) ENGINE=MyISAM;
J'ai supprimé les autres champs qui sont inutiles ici.

Il suffit de rajouter une ligne que j'ai appelé lastquerytime, qui représente la date récupérée par time()(donc un BIG INT) de la dernière requête exécutée par un utilisateur.

`lastquerytime` bigint(20) NOT NULL,

Chaque fois qu'un utilisateur connecté et loggué affichera une page, lastquerytime prendra la valeur de time(), c'est-à-dire l'heure actuelle, en secondes.
Il suffit de n'afficher que les utilisateurs dont lastquerytime a moins de 5 minutes... c'est-à-dire les utilisateurs qui ont affiché une page il y a moins de 5 minutes.
Et ce code n'est pas un simple compteur, puisqu'il affiche la liste des pseudos.

Source / Exemple :


//Mon code (Ctrl+A, Ctrl+C et Ctrl+V) dans un fichier connected_users.php

Connected :<br>
<?
include("db_connect.php"); //Infos de connexion et connexion à la bdd

if ($_SESSION['pseudo'] != '') //Le geek est loggué ?
{
 $pseud = $_SESSION['pseudo'];
 $query = "SELECT * FROM registered_users WHERE pseudo='$pseudo'"; //On récupère ses infos dans la bdd
 $result = mysql_query($query);
 if ($result) //On a ses infos ?
 {
  $lastquerytime = time(); //Il a exécuté ce code MAINTENANT
  $query = "UPDATE registered_users SET lastquerytime='$lastquerytime' WHERE pseudo='$pseudo'"; //On l'écrit dans la table
  mysql_query($query);
 }
}

$fiveminago = time() - 5 * 60; //5*60s=5min de délai, mettez ce que vous voulez
$query = "SELECT pseudo FROM registered_users WHERE lastquerytime>'$fiveminago'"; //Tous ceux qui ont fait un truc y a moins de 5min
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) //Tant qu'on a des noms
{
 echo $row[0]."<br>"; //On les affiche
}
?>

Conclusion :


<?
include("connected_users.php"); //A l'endroit où vous voulez la liste
?>

Si vous voulez des explications, ou que vous avez des idées, des remarques, quelque chose quoi... -> Commentaire ! :)

A voir également

Ajouter un commentaire Commentaires
ou peux on télécharger ses mal foutu
merci du partage
Messages postés
1
Date d'inscription
dimanche 26 juillet 2009
Statut
Membre
Dernière intervention
26 juillet 2009

Bonjour, j'aimerai savoir si quelqu'un pourrai corrigé ce script, car j'ai essayés et je n'arrive pas, je connais pas le php, j'arrive à comprendre un peu le code mais j'arrive pas à le faire fonctionné. Merci d'avance.
Messages postés
35
Date d'inscription
mercredi 15 août 2007
Statut
Membre
Dernière intervention
5 février 2008

ca marche avec ma table membre? ou il faut que je change?
Messages postés
10
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
24 mai 2007

J'ai trouvé mon erreur,
- $query = "SELECT * FROM gcp_members WHERE login='$login'"; //On récupère ses infos dans la bdd
$Result = mysql_query($sql) or die (mysql_error())
le sql ne correspondait pas, et également une } mal placé.

reste à afficher !
Merci à coucou747 pour sa réactivité ;)
Afficher les 21 commentaires

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.