Qui est online?

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 266 fois - Téléchargée 28 fois


Contenu du snippet

ben voilà un ptit code pour voir les membres qui sont connectés actuellement. ce code n'est pas complet : il doit etre adapté à votre site pour bien fonctionner. voici ce dont il a besoin:

- une session ouverte sur chaque page (bah je pense que tout le monde le fait non?)
- une fonction is_online() qui renvoie un booleen si le membre est connecté ou non (visiteur non loggué)
- si le membre est logué, son id doit etre dans $_SESSION[id_mb];
- une table contenant les membres online (schéma de la table, voir en bas)

je considère un membre déconnecté après 10minutes d'inactivité, ça me semble correct

ce code a été fait à l'arrache et je pense qu'on peut y ajouter pleins de modifs lol

Source / Exemple :


// le code à insérer sur chaque page (il est préférable de le mettre dans un include pour pas envahir votre code ;)
//////////////////////////////////////
$id_user=(is_online())?($_SESSION[id_mb]):(0);
		$t=mysql_query("select * from sessions where phpsessid='".session_id()."';");
		if(mysql_num_rows($t)==1 && $_SESSION[id_session]==mysql_result($t,0,'id')){ //session déjà registrée
			mysql_query("update sessions set id_user='$id_user',date_fin=NOW(),url_page='$_SERVER[REQUEST_URI]' where id='$_SESSION[id_session]' and phpsessid='".session_id()."';");
		}else{ //new session
			mysql_query("delete from sessions where phpsessid='".session_id()."';"); //supprime l'éventuelle session qui a le meme phpsessid
			if(is_online())
				mysql_query("delete from sessions where id_user='$_SESSION[id_mb]' and phpsessid<>'".session_id()."';");
			mysql_query("insert into sessions (phpsessid,id_user,ip,date_debut,date_fin,url_page) values ('".session_id()."','$id_user','$_SERVER[REMOTE_ADDR]',NOW(),NOW(),'$_SERVER[REQUEST_URI]');");
			$_SESSION[id_session]=mysql_insert_id(); session_register("id_session");
		}
		//maintenant faut faire le ménage pour voir ceux qui se sont déconnectés entre temps
		$connectes=mysql_query("select * from sessions order by date_fin asc");
		$limite=mktime(date('H'),date('i')-10,date('s'),date('m'),date('d'),date('Y'));
		for($i=0;$i<=mysql_num_rows($connectes)-1;$i++){
			$date_fin=strtotime(mysql_result($connectes,$i,'date_fin'));
			if($date_fin<$limite){
				mysql_query("delete from sessions where id='".mysql_result($connectes,$i,'id')."';");
			}else break; //pour pas tous les reparcourir pk c trié dans l'ordre date_fin asc
		}

//et le code à mettre aussi sur chq page qui affiche le nombre de connectés et de visiteurs
//////////////////////////////////////

$mb_connectes=mysql_query("select * from sessions where id_user<>'0';");
$nb_mb_connectes=mysql_num_rows($mb_connectes);
$connectes=mysql_query("select * from sessions where id_user='0';");
$nb_connectes=mysql_num_rows($connectes);
echo number_format($nb_connectes,0,'',' ').'&nbsp;visiteurs';
echo ', ';
echo number_format($nb_mb_connectes,0,'',' ').'&nbsp;membres';

Conclusion :


Voilà la structure de la table, l'id du membre est stocké en INT(10), ça peut etre adapté à votre site si besoin

CREATE TABLE `sessions` (
`id` int(10) NOT NULL auto_increment,
`phpsessid` varchar(255) NOT NULL default '',
`id_user` int(10) NOT NULL default '0',
`ip` varchar(15) NOT NULL default '',
`date_debut` datetime NOT NULL default '0000-00-00 00:00:00',
`date_fin` datetime NOT NULL default '0000-00-00 00:00:00',
`url_page` varchar(255) default NULL,
UNIQUE KEY `id` (`id`),
UNIQUE KEY `phpsessid` (`phpsessid`)
) TYPE=MyISAM;

A voir également

Ajouter un commentaire

Commentaires

tagboys
Messages postés
42
Date d'inscription
lundi 28 avril 2003
Statut
Membre
Dernière intervention
28 mars 2014
-
p-e avec un petit example sa aiderait les debutants
eax
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007
-
oui merci floche

pour fonctionner, ce code a besoin d'une fonction is_online() que je ne peux pas proposer ici car je ne sais pas comment fonctionne votre site ;)
cs_floche
Messages postés
16
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
11 avril 2006
-
alors soit vous savez pas lire , soit il l a mis aprés, mais il dit dans la description, il dit que ce code a besoin de :
"une fonction is_online() qui renvoie un booleen si le membre est connecté ou non (visiteur non loggué)"

voila sinon merci c est exactement ce que je cherchais
_klesk
Messages postés
70
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
20 août 2008
-
Si vous avez une version qui marche je suis preuneur merci.
yurispy
Messages postés
39
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
7 septembre 2006
-
Bon j'ai scruté un peu le code, je sais pas trop ce que fait la fonction is_online() mais elle semble pas super important, car le script fonctionne sans et avec quelque petite modif de nom de sessions

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.