Accueil > > > QUI EST ONLINE?
QUI EST ONLINE?
Information sur la source
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,'',' ').' visiteurs';
- echo ', ';
- echo number_format($nb_mb_connectes,0,'',' ').' 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,'',' ').' visiteurs';
echo ', ';
echo number_format($nb_mb_connectes,0,'',' ').' 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
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|