begin process at 2012 02 14 02:36:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > QUI EST ONLINE?

QUI EST ONLINE?


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : eax

Ecrire un message privé
Site perso
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;


 Sources du même auteur

AFFICHAGE DE RÉSULTATS MYSQL SUR PLUSIEURS PAGES
CALCULER LA TAILLE D'UN DOSSIER
Source avec Zip CODES POSTAUX LOL
ÉVITER LA DÉFORMATION D'UN TABLEAU HTML EN DÉCOUPANT UNE CHA...
Source avec Zip ÉPHÉMÉRIDE

 Sources de la même categorie

Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
COMPTEUR DE VISITE - FICHIER TXT - CODE MINIMAL par SuperChouquette

Commentaires et avis

Commentaire de BioSs007 le 17/08/2004 13:15:02

merci c'est ce qu'il me falait !

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...

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

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

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

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

Commentaire de _klesk le 30/06/2006 15:08:13

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

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

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

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...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,120 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales