Qui est online?

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 648 fois - Téléchargée 30 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
BioSs007 Messages postés 19 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 6 septembre 2013
17 août 2004 à 13:15
merci c'est ce qu'il me falait !
Philenain1 Messages postés 43 Date d'inscription jeudi 8 avril 2004 Statut Membre Dernière intervention 29 mars 2010 1
26 sept. 2005 à 13:50
Eu... Si la fonction is_online() est de toi il faudrai peut-etre la mettre je pensse...
guardian01 Messages postés 9 Date d'inscription dimanche 27 juillet 2003 Statut Membre Dernière intervention 10 juin 2006
23 déc. 2005 à 16:40
Bonjour

j'ai fait un essais

mon message d'erreur est

Fatal error: Call to undefined function: is_online() in c:\documents and settings\claude\mes documents\testsphp\chap08\Online.php on line 5


debutant en php quelqu'un peut il m'expliquer

je ne trouve nul part d'explication sur la function is_online()

merci par avance

Guardian
Gwadabac971 Messages postés 2 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 16 octobre 2006
7 janv. 2006 à 17:05
J'ai exactement la même erreur, j'aimerai donc savoir comment utiliser cette fonction :s
yurispy Messages postés 39 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 7 septembre 2006
3 mars 2006 à 21:54
idem pour l'erreur... j'ai eu beau chercher mais rien et ce genre de scripte semble etre rare en plus

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.