Systems en ligne hors ligne

Ce topic a été résolu
Flex

Flex Le 20 décembre 2016 à 22:23 (Édité le 25 janvier 2019 à 17:52)

Bonsoir, je cherche à faire un système pour savoir quel membres est en ligne ou hors ligne. je souhaiterais faire ça avec les session mais je ne sais pas comment m'y prendre :/

Merci pour votre aide 😀 
Flex

Flex Le 21 décembre 2016 à 15:47

Personnes :/
TheFlameflo

TheFlameflo Le 22 décembre 2016 à 02:11

Salut !

Je pense que ce tutoriel pourrait t'aider : https://www.youtube.com/watch?v=qi4Ho1YVMBs

Bonne chance !
Johan-Krn

Johan-Krn Le 22 décembre 2016 à 02:51

Salut si j'ai la solution mais c'est pas méga optimiser et j'ai pas trouver d'autre solution enfin j'ai pas chercher autre chose bref

dans ta base de donnée (La ou sont stocker des utilisateur) tu ajoute un champ "Online" ou un autre nom plus claire sa sera un type ENUM et dans taille/valeurs tu écrit sa "'0','1'" en gros on choisis entre 0 ou 1 après avec le ENUM tu peut mettre plain de paramètre par exemple moi j'ai mis sa "'0','1,'2''" du coup j'ai le choix entre 0, 1 ou 2 pour moi "0" dit que la personne est hors ligne, "1" dit que la personne est en ligne après si tu veut ajouter comme moi le "2" dit que la personne est en ne pas déranger(optionnel) sinon il suffit d'utiliser BOOLEAN qui est pareil sauf que c'est binaire donc pas le choix c'est vrai ou faut, 0 ou 1 bref moi je montrerais que en BOOLEAN et rien a mettre dans la taille/valeurs

dans la page de connexion ajouter les ligne de code qui son en dessous il faut mettre le bout de code après avoir vérifier que tout les infos son les bonne en gros juste au dessus du code pour rediriger l'utilisateur
$q = $db->prepare("UPDATE users SET online='1' WHERE pseudo = :identifiant");
$q->execute([
   'identifiant' => $_GET['identifiant']
]);

pour faire simple le $q est le nom que j'utilise pour stocker la requête mais tu dois le savoir bref le $db est le nom que j'ai mis pour me connectant a la bdd ensuite ma table s'appelle "users" je modifie "Online" pour le mettre a "1" la ou le pseudo trouver dans la bdd correspondent bien a l'identifiant, "identifiant" qui est le que j'ai mis dans le name du input après quand j’exécute je dit que "identifiant" est le "$_GET['identifiant']" donc c'est se qui est entrer dans le champ "identifiant"

après pour afficher je fait sa(en dessous) moi j'ai pris un bout de code css sur internet pour avoir un point vert si le "is-online" est mis dans la class du span si c'est vide le point est rouge
<?php
$q = $db->prepare("SELECT name, pseudo, email, online, avatar FROM users WHERE id = ?");
$q->execute([$_GET['id']]);
         
$user = $q->fetch(PDO::FETCH_OBJ);
?>
<div class="user-online-status">
   <span class="user-status <?= $user->online ? 'is-online' : ''; ?>"></span>
</div>
donc le "is-online" c'est le nom pour mettre la couleur verte et si elle est pas dans la class du span c'est rouge bref
je sélectionne tout ce que je veut afficher sur le profil de mon utilisateur la ou id est égale, sois c'est dans l'url en GET ou en SESSION(mais seulement si on peut pas voir le profil des autres utilisateurs) après on fait un fetch moi je le mais en objet ensuite on fait une condition ternaire en gros si $user->online est égale a 0 je mais "is-online" sinon je laisse les guillemet vide

et pour finir mettre a "0" le "Online" quand on se déconnecte il faut mettre a "0" le champ "Online" est après faire un sesseion_destroy
session_start();
require_once 'config/db.php';
$q = $db->prepare("UPDATE users SET online='0' WHERE pseudo = ?");
$q->execute([$_SESSION['pseudo']]);
donc on mais un session_start
après moi je require le fichier qui se charge de faire la connexion a la bdd
et je fait la requête on update dans la table users le champ online a "0" la ou le pseudo est égale a "$_SESSION['pseudo']" vu qu'on n'est dans la page de déconnexion ya pas d'id dans l'url et qu'on n'a toujours accès au session

FIN
j'espere que tu comprendra ce que j'ai écrit(niveau code) si ta un problème j’essayerais de t'aider même si mon système n'est pas très simple est qu'il n'est pas fiable a 100% par exemple si l’utilisateur se connecter quitte la page sans se déconnecter ben sa resterai afficher connecter pour toi je pense qu'il doit y avoir d'autre solution mais j'ai pas chercher car moi sa me suffisait 
Flex

Flex Le 22 décembre 2016 à 11:27

Salut, merci @toutpac le code est fonctionnelle cependant comment tu la dit si une personnes quitte la page sans se déconnecter il sera toujours marquer comme connecter est ce n'est pas se que je cherche à faire :/ 
Johan-Krn

Johan-Krn Le 23 décembre 2016 à 00:04

RE désoler de pas t'avoir rep plus tôt mais je fessais des teste
est je bloque car a chaque fois que j'avais une idée il fallait toujours que l'utilisateur change de page
je pense que c'est pas possible en php
car on peut pas savoir si l'utilisateur est sur la page

mais en js on peut j'ai trouver se topic 
https://www.grafikart.fr/forum/topics/18488#p72254
par contre je peut pas tester j'ai plus d’écran j'espere que réussira
Flex

Flex Le 23 décembre 2016 à 17:16

D'accord pas de soucis, merci beaucoup je vais regarder ça 😉 
Profil introuvable

Profil introuvable Le 28 décembre 2016 à 14:10

N'oublies pas de mettre le topic en résolu une fois que tu auras trouvé. 😉
Flex

Flex Le 28 décembre 2016 à 19:21

C'est fais 😉
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte