Système de membre connectés
Résolu/Fermé
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
-
16 janv. 2010 à 20:06
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 17 janv. 2010 à 19:44
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 - 17 janv. 2010 à 19:44
A voir également:
- Système de membre connectés
- Restauration systeme windows 10 - Guide
- Voir les appareils connectés facebook - Guide
- Membre indisponible vinted - Guide
- Comment refaire le système d'un ordinateur - Guide
- Ajouter membre groupe whatsapp - Guide
14 réponses
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 497
16 janv. 2010 à 20:30
16 janv. 2010 à 20:30
$array = array (''.$ip_test_brut.' => '.$ip_test_brut_2.'') or die(mysql_error());Essaye en retirant l'espace entre "array" et "(".
Pour ton système, je te conseil d'ajouter 2 champs sur ta table des membres au lieu d'en créer une.
Ces deux champs seraient :
1/ derniere_visite (INT) : contient le timestamp du dernier chargement d'une page (mis à jour à chaque chargement de page, à l'aide d'un script inclus dans cahque page).
2/ derniere_ip (INT ou TINYTEXT) : pareil, mais cette fois ci le champ contient la dernière IP utilisée.
Tu peux directement enregistrer l'IP (TINYTEXT), mais je te conseil d'utiliser ip2long() et long2ip() pour stocker les adresses IP en INT plutôt qu'en STRING.
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
18
16 janv. 2010 à 20:35
16 janv. 2010 à 20:35
j'ai l'espace comme tu m'a dit, mais ca ne marche toujours pas.
Mais à quoi servirait l'enregistrement de la dernière visite ou de la dernière ip, puisque ce qui m'interesse, c'est d'associer l'ip connecté au pseudo du membre.
Mais à quoi servirait l'enregistrement de la dernière visite ou de la dernière ip, puisque ce qui m'interesse, c'est d'associer l'ip connecté au pseudo du membre.
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 497
16 janv. 2010 à 20:54
16 janv. 2010 à 20:54
C'est juste une autre façon de faire, celle que j'utiliserais.
Et l'IP est forcément liée au compte car c'est sur la même entrée.
Dans ta table pourraie ressembler à ça :
id | pseudo | pass_md5 | presentation | derniere_connexion | derniere_ip
Pour savoir si le membre est connecté, il suffit que "derniere_connexion" soit inférieur (ou égal) au timestamp actuel moins 300 (300 secondes = 5 minutes).
Et l'IP est forcément liée au compte car c'est sur la même entrée.
Dans ta table pourraie ressembler à ça :
id | pseudo | pass_md5 | presentation | derniere_connexion | derniere_ip
Pour savoir si le membre est connecté, il suffit que "derniere_connexion" soit inférieur (ou égal) au timestamp actuel moins 300 (300 secondes = 5 minutes).
$pdo = new PDO('mysql:host=localhost;dbname=basededonnees', 'user', 'password'); $sql = 'SELECT pseudo, derniere_ip FROM membres WHERE derniere_connexion <= '.(time() - 300); $req = $pdo->query($sql); $req->setFetchMode(PDO::FETCH_OBJ); while($membre = $req->fetch()) { echo $membre->pseudo.' est connecté avec l\'IP '.$membre->derniere_ip.'<br/>'."\n"; }
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
18
16 janv. 2010 à 22:30
16 janv. 2010 à 22:30
ok merci :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 497
16 janv. 2010 à 23:39
16 janv. 2010 à 23:39
Résolu ?
Pour afficher "Il y a x connectés", voilà le script :
Pour afficher "Il y a x connectés", voilà le script :
$pdo = new PDO('mysql:host=localhost;dbname=basededonnees', 'user', 'password'); $sql = 'SELECT * FROM membres WHERE derniere_connexion <= '.(time() - 300); $nbConnectes = $pdo->exec($sql); echo 'Il y a '.$nbConnectes.' connectés';
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
18
17 janv. 2010 à 11:57
17 janv. 2010 à 11:57
Ba j'ai réussi a faire le truc moi-même, voici le code :
Mais là logiquement, ca n'afficherait qu'un pseudo, et si je fait un while, la boucle tournerai toujours sur le même pseudo. Comment pourrais-je faire ?
if ($donnees['nbre_entrees'] != 0) { $ip_test_brut = mysql_query('SELECT ip FROM connectes') or die(mysql_error()); $array_ip = mysql_fetch_array($ip_test_brut)or die(mysql_error()); $pseudo_ip_brut = mysql_query('SELECT IP, pseudo FROM comptes') or die(mysql_error()); $pseudo_ip = mysql_fetch_array($pseudo_ip_brut)or die(mysql_error()); $ip_pseudo = $pseudo_ip['IP']; if ($array_ip['ip'] = $ip_pseudo) { echo '<li>'.$pseudo_ip['pseudo'].'</li>'; } }
Mais là logiquement, ca n'afficherait qu'un pseudo, et si je fait un while, la boucle tournerai toujours sur le même pseudo. Comment pourrais-je faire ?
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 497
17 janv. 2010 à 12:26
17 janv. 2010 à 12:26
Pense à désindenter tes codes avant de les copiers.
Et tu n'as toujours pas fait comme je t'ai dit, avec les champs "derniere_visite" et "derniere_ip" !
Et tu n'as toujours pas fait comme je t'ai dit, avec les champs "derniere_visite" et "derniere_ip" !
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
18
17 janv. 2010 à 12:46
17 janv. 2010 à 12:46
Non, je n'ai pas fait ce système, je n'ai pas essayé, j'ai donc fait celui là qui marche, et je voudrais savoir s'il y a une solution a mon problème ^^
S'il vous plait.
S'il vous plait.
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 497
17 janv. 2010 à 14:49
17 janv. 2010 à 14:49
Base toi sur mon script, c'est le même principe, sauf qu'il faut changer la table, le nom des champs et retirer la clause WHERE.
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
18
17 janv. 2010 à 17:16
17 janv. 2010 à 17:16
Voilà, j'ai fait ce système, qui est bon puisqu'il m'a afficher le pseudo d'un membre connecté, mais il ne me l'a affiché que quelques minutes, je me suis reconnecté et là, il ne veut plus rien m'afficher.
Voici le code :
Et voici le code d'update de l'ip et du timestamp (qui est intégré a toutes les pages) :
Qu'est-ce qui cloche ?
Merci
EDIT : Je viens de remarquer qu'il met le pseudo dans la liste des connectés un peu de temps après, est-ce parce que je suis en local ?
Voici le code :
$time = 300; $connectes_brut = mysql_query('SELECT * FROM comptes WHERE timestamp <= \''.(time() - $time).'\'')or die (mysql_error()); while ($donnees = mysql_fetch_array($connectes_brut)) { echo '<li><a href="envoyer_message.php?repondre='.$donnees['pseudo'].'&titre=Connecté">'.$donnees['pseudo'].'</a></li>'; }
Et voici le code d'update de l'ip et du timestamp (qui est intégré a toutes les pages) :
mysql_query("UPDATE comptes SET IP='".$_SERVER['REMOTE_ADDR']."', timestamp='".time()."' WHERE pseudo='".$verif_pseudo."'")or die (mysql_error());
Qu'est-ce qui cloche ?
Merci
EDIT : Je viens de remarquer qu'il met le pseudo dans la liste des connectés un peu de temps après, est-ce parce que je suis en local ?
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 497
17 janv. 2010 à 17:26
17 janv. 2010 à 17:26
Si ton champ timestamp est en INT alors ne mets pas d'apostrophes autour du nombre, sinon ça devient une chaine de caractères.
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
18
17 janv. 2010 à 17:35
17 janv. 2010 à 17:35
ca ferait
c'est bien ca ?
mysql_query("UPDATE comptes SET IP='".$_SERVER['REMOTE_ADDR']."', timestamp=".time()." WHERE pseudo='".$verif_pseudo."'")or die (mysql_error());
c'est bien ca ?
aneantisseur
Messages postés
384
Date d'inscription
dimanche 8 mars 2009
Statut
Membre
Dernière intervention
13 juillet 2018
18
17 janv. 2010 à 17:47
17 janv. 2010 à 17:47
Je crois avoir trouvé, j'avais mis
j'ai changé et j'ai mis
Et tout marche parfaitement maintenant.
WHERE timestamp <= \''.(time() - $time).'\'')
j'ai changé et j'ai mis
>=au lieu de
<=
Et tout marche parfaitement maintenant.
avion-f16
Messages postés
19246
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 avril 2024
4 497
17 janv. 2010 à 19:44
17 janv. 2010 à 19:44
Effectivement, je me suis trompé de signe.
Je mets le topic en résolu.
Je mets le topic en résolu.