Salut, j'ai un problème au niveau de la déconnexion d'un utilisateur.
Problématique : Pour voir si un utilisateur est connecter ou nom j'utilise un champ dans la base de donnee connecter (quand il est connecter il est mis a 1 quand il deconnecte il est remis a zero) mais si le mec ne deconnecte pas mais il quite directement sans deconnecter il reste toujoursconnecter par rapport aux autres membres . donc comment qu'il faut que je prossede pour eviter ce genre de problème.
merci , cordialement

17 réponses


Salut bas je pense que tu devrai ajouter un champs supplémentaire à ta table, tu l'appel "connexion", et ensuite tu fait une requête SQL sur une page qui est charger tout le temps pour que la valeur du champs "connexion" soit le timestamp actuel. Ensuite tu fait un simple requête SQL pour afficher si oui ou non il est connecter.d

Dans cette rêquete tu ajout un WHERE pour vérifier si la valeur du champs "connexion" stocké dans dans la basse de donnée et supérieure ou égale au timestamp+5minutes.

Tiens moi au courant :D !

Je ne sais pas est ce que sa va pas causer un lenteur au niveau du site en plus je ne sais pas est ce que sa va regler mon probleme parceque ce que je veux eviter c d'affciher a un client que quelqu'un est connecter mais ce dernier ny plus connecter.

Le mieux c'est que tu face ça en jQuery. Il y a événement lorsqu'il quitte la page ou même le navigteur. Je crois que c'est la fonction "unload".
Tu n'auras qu'à faire une fonction ajax qui appele un script php qui permet de changer la valeur de ta base de donnée.

Par contre attention, certain navigateur ne le fait pas marché cette fontcion, mais c'était la version 1.4.
Depuis j'ai pas réésayer avec la version 1.6 qui est sorti.

Moi perso je fait c que je t'ai dit est j'ai aucun problème de lenteur et aucun problème d'affichage des membres connecter.

@luffysan ce qu'il y'a de chiant dans ta solution c quand l'utilisateur ouvre plusieur onglet de page donc si il quitte un de ces onglet il va se deconnecter et je trouve que c anormal pas vrai ??

@aureliendu917 ^^ j'ai pas utilise ta solution parceque j'ai pas bien saisie l'idee un peu plus d'explication sera la bienvenu
merci , cordialement.

Oui c'est vrai. Mais je sais pas si cest quand il quitte l'onglet.

En fait si j'ai bien compris aureliendu917, tu fais un tâche qui suit tout les pages. Cette tâche s'active qu'un certain temps. au bout d'un certain temps, il va faire une requête pour voir quand si la date inséré dans le champs connecter = maintenant + 5 min.

C'est uen solution. sa dépend de quel côté il fait le truc. si c'est le serveur qui le fait pourquoi pas. Mais ça fait quand même tâche lourde surtout avec beaucoup d'utlisateur. Le client peut le faire, mais bon ça dépend l'environnement client.

Sinon il y a autre moyen plus simple, c'est presque pareil. Mais je la trouve plus élégant. Mais je l'ai fait, mais j'ai eu le temps de la tester à grande échelle. Si tu as fait une connexion avec un $_Session. tu dois redéfinir d'abord son temps , mais aussi qcomment il gère le destucteur de l'objet. Au lieu qu'il détruit simplement le cookies, tu lui dit qu'il fasse une requête SQL en même temps. Par contre là, c'est compliquer il faut gérer les ID.

Ou sinon t'a plus simple, tu fais un déclencheur(trigger) à chaque fois que la valeur change dans ton champs. Si il est en ligne tu lui dans 15 min tu le mets hors ligne.

Mais le mieux c'est quand même un bouton, il se déconnnecte.

Et les cookies ils sont pas là pour rien :P si?

Tu met un cookie de 10 minute qui se rechargera à chaque page ouverte. Dès que celui ci est dead, bah tu fais en sorte de le retirer de la liste des personnes en ligne, et pour ça tu fais en sorte d'afficher les personnes en ligne en fonction des cookies.
Faut pas oublier que $_COOKIE est un tableau.

Fin j'dis ça, j'me trompe peut être totalement. Mais c'est plus simple ^^

$_cookies généralement je l'évite. Personnelemnt, je trouve ce cookies dangereux.
Mais c'est une solution.

D'ailleurs j'aimerais bien savoir (pour ma culture personnel) en quoi c'est dangereux. Car je vois beaucoup s'en méfier, mais c'est une méthode très répandu ^^

Tout simplement par le client peut avoir à la main dessus.
Enfin pour les attaques à injection SQL. Et aussi le type de donnée que tu vveu stocker.
La seule réponse parce que c'est vrai qu'on me dit c'est dangereux mais je sais pas réellement pourquoi donc je préfère de ne pas dire trop de connerie.

Bah il suffit de savoir se protéger et de colmater les éventuelles failles avec les fonctions prévu à cet effet, c'est comme la formulaire de méthod post, avec un bot curl on peut très bien modifier à sa guise les données et ainsi profiter d'une faille sql si les données ne sont pas sécurisé.

Oui, mais bon autant prévenir la faille et de la guérir.

ho ho les gars je voix que vous sortez un peu du sujet. !!

Lol désolé, mais c'est jamais perdu ce genre d'info :P

Donc moi j'te conseille de passer par les cookies, oublies le JS car tout les internautes ne l'activent pas forcement ^^
Pour les cookie, tu met à jour le cookie à chaque rechargement de page, le cookie aurait une durée de 10 minutes, une fois mort, tu pourras l'enlever de la liste des user en ligne.

Ya surement d'autre solution, mais celle là devrait fonctionner ^^

salut la solution est de tuer la session et de changer le champs connecter si l'utilisateur et fermer le navigateur sans cliquer sur déconnexion
tu px jouer avec time() je te donne la solution mais demain inchalah ^^ @+ :)

voila tu doit ajouter un champs ds la table utilisateur time
alors lorsque le utilisateur se connecter le champs time doit modifier par

$time=time();

alors si l'utilisateur quitter le site sans déconnecter
tu doit modifier le champs connecter

$time_to_pc=$time+180;
$sql = "update utilisateur set connecter=0 where time > $time_to_pc";
   mysql_query($sql) or die('Erreur Sql</br>'.$sql_delet.'</br>'.mysql_error());

bah ceci va changer la valeur de tous les gens qui ont quitter ton site sans cliquer sur déconnecter

Ce exactement çà que je ça disait sur ma réponse !!!!