Groupe : Membres Messages : 70 |
Bonjours. Après mainte essaies en vain, je me permet de poster ce topic, afin de connaitre le moyen d'afficher la liste des membres connectés. Merci de votre aide PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Salut, Il te suffit de créer une table "connectes" avec l'IP du visiteur, la date de la dernière "connexion" (la dernière fois qu'il a visité une page), l'ID du membre et tout ce que tu veux connaître de lui. Ensuite sur toutes tes pages tu vérifie si l'adresse IP du visiteur est déjà dans la base. Si non -> tu l'ajoute. Si oui -> tu modifie la date de la dernière connexion. Ensuite tu supprime toutes les entrées dont la date de dernière connexion est supérieure à 5 minutes (par exemple). Explication rapide, je ne sais pas si tu m'a compris ? |
Groupe : Membres Messages : 70 |
Si j'ai compris enfin je crois Comment tu traiterais la date pour qu'elle corresponde à la dernière visite? Merci ++ PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Par ici : http://www.crea-paradise.com/tutorial-193-1-optimisation-date-heure.htmlEnfait tu entre la date actuelle quand tu ajoute/met à jour le membre dans la table des connectés .
|
Groupe : Membres Messages : 70 |
:rougi: oui c'est clair, j'y aurais pas pensé, malgrés que je l'ai fait pour afficher les derniers messages Pff bon je suis fatigué ça doit être pour ça Au fait je peu pas utiliser ma table membres pour faire cela, en rajoutan un champ IP??? ++ Merci PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Oui tu peux, si tu ne veux pas afficher les visiteurs (qui ne sont pas des membres) en ligne .Il ne faut aussi pas oublier d'ajouter aussi un champ "connecte", qui prend 1 si le membre est connecté et 0 si il ne l'est pas. |
Groupe : Membres Messages : 70 |
Quand tu parle de champs, tu parle dans la BDD? Si c'est cela, excuse moi de te demander cela, mais comment faire pour interagir sur ce champ? Peu tu etre un peu plus clair STP, afin que je sache mieux quoi faire? Je te remercie pour tout, ++ PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Ajouter un champ dans la table de ta base de donnée. C'est parce qu'il faut que tu puisse différencier les membres connectés des membres non-connectés. En fait au lieu d'ajouter/supprimer un enregistrement dans une table "connectes" quand un membre se connecte/est innactif tu modifie la valeur du champ "connecte" de ta table "membres" de 0 à 1 et vice-versa. Tu me suis ? |
Groupe : Membres Messages : 70 |
Ok je vais tenter ceci, merci bien, si j'ai besoin au pire je te tiens au courant ++ PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Ok, pas de problèmes .
|
Groupe : Membres Messages : 70 |
Bon c'est pas faute d'avoir essayer Je me tiens devant un dilemme! J'arrive à d"finir si le membre est connecté ou pas, mais le hic, c'est que si il ferme son EI, j'ai toujours son nom afficher à l'écran, du fait qu'il ne s'est pas déconnecté. Bin je joins mon code, déjà pour voir si c'est ok, ensuite si tu peu me dire comment faire pour connaitre l'état physique d'un membre? (en ligne ou horsligne) Merci ++ on code: Code PHP:
<?php $connect="oui"; $verifconnect = web_query('SELECT * FROM membres WHERE connecte="'.$connect.'"'); while ($donnee = mysql_fetch_array($verifconnect)) { if ($donnee['connecte']=="oui") { if ($donnee['groupe']=="admin") { echo ('<a style="color:#ff0000;font-weight:bold;" href="index.php?name=voirprofil&login='); echo $donnee['login']; echo ('">'); } if ($donnee['groupe']=="moderateur") { echo ('<a style="color:#00ff00;font-weight:bold;" href="index.php?name=voirprofil&login='); echo $donnee['login']; echo ('">'); } if ($donnee['groupe']=="membre") { echo ('<a style="color:#0000ff;font-weight:bold;" href="index.php?name=voirprofil&login='); echo $donnee['login']; echo ('">'); } echo $donnee['login']; echo '</a>'; echo ' '; } if ($donnee['connecte']="non") { echo ''; } } ?> PHP Dev en force |
![]() Groupe : Membres Messages : 270 |
La réponse est : tu ne peux pas. La solution est : il faut un "timelock" après lequel l'utilisateur est automatiquement déconnecté. Cinq minutes par exemple. |
![]() Groupe : Admins Messages : 2070 |
Il faut que tu fasse en haut de toutes tes pages une requête du style : Code PHP: <?php $timestamp_5min=time() - (60 * 5); query("UPDATE membres SET connecte = 'non' WHERE connecte = 'oui' AND dateDerniereConnexion<". $timestamp_5min); ?> En fait à chaque chargement d'une page il va déconnecter les membres qui ne sont plus actifs depuis au moins 5 minutes. Si tu as utilisé un champ int pour dateDerniereConnexion, sinon si tu as utilisé un champ de type DATETIME il faudra faire une autre manipulation pour récupérer la date d'y a 5 minutes =). |
![]() Groupe : Membres Messages : 270 |
Heu, le dernier connecté ne sera jamais déconnecté avec ça, si ?
|
![]() Groupe : Modérateurs Messages : 145 |
Non, mais justement qui va aller voir que personne n'est connecté si il n'y a personne pour charger la page donc pas vraiment gênant
![]() Projets en cours: - Olympe-Network (hébergement gratuit et sans pub) - ProgDez NetWork's - Mon PortFolio / Blog perso - Quote-me.fr - un peu de détente ça vous dit ? |
Groupe : Membres Messages : 353 |
Ca serais mieux de vérifier avec le timestamp si le membre a ete actif dans les 5 dernière minutes. si oui c'est qu'il est connecté sinon il est pas connecté |
Groupe : Membres Messages : 70 |
Oui je vois ce que vous voulez dire. En vrai la solution de beetls01 et rocawear me parait correct, c'est a dire utiliser un timestanp. Enfin je pense ça devrai le faire. Bon je vais tenter ceci, je vous tiens au courant. Merci à vous en tout cas. ++ PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Citation: Cheaterman Heu, le dernier connecté ne sera jamais déconnecté avec ça, si ? Oui, mais bon comme l'a dit ProgDez c'est pas trop gênant vu qu'il n'y aura personne pour le voir .
|
Groupe : Membres Messages : 70 |
Bon, je sais que je suis chiant. Ton code marche très bien lbeetls01, mais le hic, c'est que il déconnecter même les membres connectés. Code PHP: $datea=time(); $timestamp_5min = $datea - (300); $timelimite = $timestamp_5min - $datea; web_query('SELECT * FROM membres WHERE lastdateconnect<="'.$timelimite.'"'); C'est une ébauche de ce que j'ai tenter, mais peu importe la tournure, le faite est qu'il va bien déconnecter le membre, mais même les connectés. En gros, est-ce-que quelqu'un aurais un script pour pouvoir afficher uniquement les membres réellement "en lignes"? Merci de m'aider, c'est cool. Dans l'espoir d'y arriver ++ .PHP Dev en force |
Groupe : Membres Messages : 70 |
PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Il déconnecte le membre, mais si il est vraiment connecté ça va le reconnecter =). Ça marche très bien, c'est le système utilisé sur Crea-paradise... Ça serait encore moins fiable si tu fait un système qui détecte si il quitte la page, ou le navigateur, car il suffit qu'il plante ou quoi que ce soit d'inattendu et il reste connecté à jamais =). |
![]() Groupe : Membres Messages : 134 |
Mais ça marche qui si il y a un coockie de connexion automatique lbeetls01, non ? |
![]() Groupe : Admins Messages : 2070 |
Non, même sans cookie ça marche .Il vérifiejuste le timestamp qui se trouve dans la base de donnée et qui a été enregistré lors du chargement d'une page. |
Groupe : Membres Messages : 70 |
Je ni arrive plus, enfin, j'arrive a refaire le principe, mais je n'arrive pas a faire le code de mis a jour dans chaque page, en fait, soit ça déconnecte tout le temps, soit non. Pourriez vous, s.v.p, m'indiquer tout ce que doit contenir une table permettant de déconnecter automatiquement, tous les membres qui ne sont pas actifs depuis 10 minutes, et les reconnecter, si jamais ils étaient sur un sujet (par exemple) En fait, pourriez vous m'indiquer le meilleur moyen d'arriver a faire ce code, sans pour autant le faire, pour que je puis mi essayer, en ayant les objectifs à faire. Merci @++ PHP Dev en force |
![]() Groupe : Admins Messages : 2070 |
Peux-tu nous donner ton code, pour qu'on puisse voir ce qui cloche ? Parce que pour la table des connectés tu as tout ici, ici et ici. EDIT : Si jamais voici la structure de la table des connectés pour Crea-paradise (en simplifié) : Code SQL: CREATE TABLE `connectes` ( `ip` varchar(50) NOT NULL DEFAULT '', `timestamp` bigint(25) NOT NULL DEFAULT '0', `useragent` varchar(200) NOT NULL DEFAULT '', `idmembre` int(5) NOT NULL DEFAULT '0', KEY `ip` (`ip`) ) ENGINE=MyISAM; Voici la procédure à exécuter sur TOUTES tes pages pour ajouter/enlever les connectés automatiquement : 1. Tu fait une requête qui va supprimer tous les connectés avec un timestamp datant de plus de 5 minutes. 2. Tu vérifie si l'IP de l'utilisateur (celui qui visite la page actuellement) est déjà dans la table connectes. 2.1. Si il y est déjà tu met juste à jour le timestamp d'après l'IP dans la table des connectés. 2.2. Si il n'y est pas encore tu l'ajoute à la table, si c'est un membre tu met son ID dans le champ idmembre, sinon tu met 0. A la connexion d'un membre : Tu met à jour le timestamp et le champ idmembre d'après l'IP dans la table connectes. Déconnexion d'un membre : Tu met à jour le timestamp et tu met le champ idmembre à 0 d'après l'IP dans la table connectes. Voilà, j'espère avoir pu t'éclairer =p. Si tu ne comprends pas bien quelque chose ou que tu as encore des problèmes n'hésite pas à demander .
|