Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

QUI EST ONLINE?


Information sur la source

Catégorie :Divers Niveau : Expert Date de création : 16/07/2004 Vu : 6 006

Note :
3,2 / 10 - par 5 personnes
3,20 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

Description

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

  • // 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';
// 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;

 

Commentaires et avis

signaler à un administrateur
Commentaire de BioSs007 le 17/08/2004 13:15:02

merci c'est ce qu'il me falait !

signaler à un administrateur
Commentaire de Philenain1 le 26/09/2005 13:50:11

Eu...  Si la fonction is_online() est de toi il faudrai peut-etre la mettre je pensse...

signaler à un administrateur
Commentaire de guardian01 le 23/12/2005 16:40:57

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

signaler à un administrateur
Commentaire de Gwadabac971 le 07/01/2006 17:05:37

J'ai exactement la même erreur, j'aimerai donc savoir comment utiliser cette fonction :s

signaler à un administrateur
Commentaire de yurispy le 03/03/2006 21:54:36

idem pour l'erreur... j'ai eu beau chercher mais rien et ce genre de scripte semble etre rare en plus

signaler à un administrateur
Commentaire de yurispy le 04/03/2006 00:10:45

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

signaler à un administrateur
Commentaire de _klesk le 30/06/2006 15:08:13

Si vous avez une version qui marche je suis preuneur merci.

signaler à un administrateur
Commentaire de floche le 02/08/2006 21:05:12

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

signaler à un administrateur
Commentaire de eax le 03/08/2006 13:39:20

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 ;)

signaler à un administrateur
Commentaire de tagboys le 08/09/2008 03:15:12

p-e avec un petit example sa aiderait les debutants

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,608 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.