Cleden Posté 14 Janvier 2005 Posté 14 Janvier 2005 (modifié) Bonjour, J'ai vu que Dan se la jouait pas mal avec ses illustres visiteurs connectés (Yahoo, Google, Adsense, Cleden etc) . J'aimerai savoir si vous ne connaitriez pas un script me permettant d'afficher les mêmes infos, c'est à dire: - Les membres connectés, - Les invités connectés, - Les moteurs (pourquoi pas). Je me doute qu'il me faudra adapter ce script à la table de mes membres. S'il n'existe pas de script '"tout faits", j'aimerais juste qu'on me donne la technique pour que je le tente avec mes petites mains. Merci d'avance, Loïc. Modifié 15 Janvier 2005 par Dan
Dash Posté 14 Janvier 2005 Posté 14 Janvier 2005 Dan utilise IPB => Regardez le code source d'IPB. Et pour exporter les fonctionnalites d'IPB dans une application PHP externe a IPB, rien ne vaut IPBSDK.
Cleden Posté 14 Janvier 2005 Auteur Posté 14 Janvier 2005 Dan utilise IPB => Regardez le code source d'IPB. Et pour exporter les fonctionnalites d'IPB dans une application PHP externe a IPB, rien ne vaut IPBSDK. <{POST_SNAPBACK}> Heu, je te remercie pour ta réponse J'imagine que le code d'IPB ne doit pas être simple pour le débutant en php que je suis. N'existe-t-il pas une solution plus simple car je me vois mal aller fouiner dans le code d'IPB ? Loïc.
Dash Posté 14 Janvier 2005 Posté 14 Janvier 2005 (modifié) il existe un manuel tres bien documente pour ipbsdk. Mais soudain, je doute que la fonction list_online_members affiche aussi les robots... Juste les membres. Modifié 14 Janvier 2005 par Dash
Real_Creatif Posté 15 Janvier 2005 Posté 15 Janvier 2005 Slt, Cleden, tu désires adapter ce script sur un forum ? un CMS ?
Cleden Posté 15 Janvier 2005 Auteur Posté 15 Janvier 2005 Slt,Cleden, tu désires adapter ce script sur un forum ? un CMS ? <{POST_SNAPBACK}> En fait, j'aimerai l'utiliser avec la table des membres de mon site www.ouetu.com Comme vous pouvez le voir j'y ai déjà un script m'indiquant le nombre de visiteurs mais j'aimerai l'améliorer en précisant les membres connectés etc. J'ai pensé ajouter une colonne dansla table de mes membres, j'updaterai celle-ci à chaque page pour y mettre le timestamp de la dernière action du membre. Mais j'ai peur que ce soit un peu lourd de le faire à chaque page. Loïc.
fosseene Posté 17 Janvier 2005 Posté 17 Janvier 2005 pour les compteur de connectés en direct je peux te proposer et sans pub http://www.mon-compteur.com fosseene
Ex-floodeur Posté 20 Janvier 2005 Posté 20 Janvier 2005 il existe un manuel tres bien documente pour ipbsdk. Mais soudain, je doute que la fonction list_online_members affiche aussi les robots... Juste les membres. <{POST_SNAPBACK}> Elle ne met que les membres...
Anonymus Posté 21 Janvier 2005 Posté 21 Janvier 2005 Tout le principe du système est de considérer qu'un moteur est un membre à part entière. Quand google arrive sur le site, il est considéré comme un membre, et loggé comme tel.
martin Posté 23 Janvier 2005 Posté 23 Janvier 2005 Perso, j'utilise un gestionaire de sessions php personnalisé et geré par mysql. Il me suffit d'une requete mysql pour avoir le nombre de membres ou de visiteurs connectés. ca marche très bien et très simplement.
Cleden Posté 19 Février 2005 Auteur Posté 19 Février 2005 Tout le principe du système est de considérer qu'un moteur est un membre à part entière.Quand google arrive sur le site, il est considéré comme un membre, et loggé comme tel. <{POST_SNAPBACK}> Oui, vu comme ça, c'est plus simple. Il ne me reste plus qu'à trouver comment reconnaitre les membres. Perso, j'utilise un gestionaire de sessions php personnalisé et geré par mysql. Il me suffit d'une requete mysql pour avoir le nombre de membres ou de visiteurs connectés. ca marche très bien et très simplement. <{POST_SNAPBACK}> Pourrais-tu me dire ou trouver ce fameurx gestionnaire ? Loïc.
martin Posté 19 Février 2005 Posté 19 Février 2005 je te mettrai mon script en ligne lundi, là je l'ai pas sous la main... ;-)
martin Posté 21 Février 2005 Posté 21 Février 2005 (modifié) Le shéma de la table mysql : CREATE TABLE `nc_session` ( `unique_id` int(5) unsigned NOT NULL auto_increment, `last_modification` datetime default '0000-00-00 00:00:00', `valid` enum('yes','no') NOT NULL default 'yes', `session_id` varchar(32) NOT NULL default '', `remote_addr` varchar(15) NOT NULL default '', `http_referer` varchar(100) NOT NULL default '', `session_data` text NOT NULL, PRIMARY KEY (`unique_id`), KEY `session_key` (`session_id`), KEY `valid` (`valid`), KEY `valid_2` (`valid`)) TYPE=MyISAM AUTO_INCREMENT=1; Voici les fonctions : function nc_session_open($path, $name) { return TRUE; }function nc_session_close() { return TRUE; } function nc_session_read($sess_id) { $data = nc_requete_mysql("SELECT session_data FROM ".session_table." WHERE session_id = '".$sess_id."' and remote_addr ='".$_SERVER['REMOTE_ADDR']."' AND valid = 'yes'"); if($data != TRUE) { return ''; } if ($data['num_rows'] > 0) { return $data['result'][0]['session_data']; } else { return ''; } } function nc_session_write($sess_id, $sess_data) { $sess_data = mysql_escape_string($sess_data); $sess_id = mysql_escape_string($sess_id); $data = nc_requete_mysql("SELECT unique_id FROM ".session_table." WHERE session_id = '$sess_id' AND valid = 'yes' AND remote_addr ='".$_SERVER['REMOTE_ADDR']."'"); if($data != TRUE) { return FALSE; } if (isset($data['num_rows']) && $data['num_rows'] > 0) { $data = nc_requete_mysql("UPDATE ".session_table." SET session_data = '$sess_data', last_modification = now() WHERE session_id = '$sess_id'"); } else { if(isset($_SERVER['HTTP_REFERER'])) { $http_referer = $_SERVER['HTTP_REFERER']; } else { $http_referer = 'no_referer'; } $data = nc_requete_mysql("INSERT INTO ".session_table." (last_modification, valid, session_id, session_data, remote_addr, http_referer) VALUES (now(),'yes', '$sess_id', '$sess_data', '".$_SERVER['REMOTE_ADDR']."', '".$http_referer."')"); } return TRUE; } function nc_session_destroy($sess_id) { $sess_id = mysql_escape_string($sess_id); $data = nc_requete_mysql("UPDATE ".session_table." SET valid = 'no' WHERE session_id = '$sess_id' and remote_addr ='".$_SERVER['REMOTE_ADDR']."'"); if($data != TRUE) { return FALSE; } else { return TRUE; } } function nc_session_gc($maxlifetime) { $data = nc_requete_mysql("UPDATE ".session_table." set valid='no' WHERE last_modification < DATE_ADD(now(), INTERVAL -$maxlifetime SECOND)"); $data = nc_requete_mysql("OPTIMIZE TABLE ".session_table); if($data != TRUE) { return FALSE; } else { return TRUE; } } il reste ensuite à mettre cette ligne avant l'appel à session_start : session_set_save_handler ('nc_session_open', 'nc_session_close', 'nc_session_read', 'nc_session_write', 'nc_session_destroy', 'nc_session_gc'); Tu remarqueras que je fait aussi appel à une gestion personalisée des requetes mysql. je te met aussi le code ;-) : function nc_requete_mysql($requete) { global $nombre_requete_mysql; debug('Requete SQL', $requete); $mysql_link=mysql_connect(mysql_server, mysql_login, mysql_pass); if(!$mysql_link) { trigger_error ('Connection base MySQL impossible', E_USER_ERROR); } $base_link = mysql_select_db(mysql_base, $mysql_link); if(!$base_link) { trigger_error ('Connection table MySQL impossible', E_USER_ERROR); } $result=mysql_query($requete, $mysql_link); if(!$result) { trigger_error ('Requete MySQL impossible', E_USER_ERROR); } else { if(ereg('SELECT', $requete)) { $i = 0; while($line = mysql_fetch_assoc($result)) { foreach($line as $name => $value) { $data['result'][$i][$name] = $value; } $i++; } $data['num_rows'] = mysql_num_rows($result); } $data['nb_affected_rows'] = mysql_affected_rows($mysql_link); $data['insert_id'] = mysql_insert_id ($mysql_link); } mysql_close($mysql_link); $nombre_requete_mysql++; if(isset($data)) { return $data; } else { return FALSE; } } Pour compter le nombre de membres conectés il suffit d'interroger la table sur le nombre de sessions valides. tu peux aussi decider de détruire les sessions au fur et à mesure au lieu de les invalider. Modifié 21 Février 2005 par martin
Cleden Posté 21 Février 2005 Auteur Posté 21 Février 2005 Merci beaucoup, je vais tester tout ça Loïc;
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant