IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Détruire une session


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Par défaut Détruire une session
    Bonjour,
    Je ne sais pas si c'est le bon titre. Je crée un petit chat et j'ai un souci sur la destruction d'une session ou bien d'un champ d'une table lorsque un utilisateur est déconnecté.
    quand l'utilisateur se log, j'enregistre son login dans une table connectés, après j'affiche tous les utilisateurs connectés sur le site. je veux supprimer automatiquement l'utilisateur qui se déconnecte from la table même s'il ferme son navigateur sans cliquer sur le bouton déconnecter ou bien s'il éteint son ordi. Sinon si y a d'autres solutions mieux que créer une table connectés n'hésitez pas à le me dire, par exemple si y a la possibilité de parcourire toutes les sessions des gens connectés.
    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux améliorer cela en detectant en javascript la fermeture du navigateur, mais ca ne marche pas universellement non plus.

    Sinon il faut traquer l'inactivité de l'utilisateur et le decreter parti au bout de X temps.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Par défaut
    Comment je teste l'inactivité? Est ce que je fais la différence entre l'heure de la connexion de l'utilisateur et le dernier message qu'il a envoyé? par exemple s'il est supérieur de 30mins je la détruit. C'est ça?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Toutafé.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre expérimenté
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Par défaut
    L'idée de détecter la fermeture du navigateur est mauvaise.
    Ce qu'il convient de faire c'est d'avoir dans ta table une colonne datant la "dernière interaction" du visiteur avec n'importe quelle partie de ton site, et de supprimer les lignes trop vielles au moment où tu veux la liste.

    A moins de beaucoup compliquer, et je n'y vois pas de raison valable, tu ne peux pas être sûr de supprimer les gens de la bdd au bout du temps fixé car php n'est lancé que pour répondre à une requête.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    L'idée de détecter la fermeture du navigateur est mauvaise.
    Elle n'est pas mauvaise, elle n'est simplement pas totalement fiable. Mais la mettre en oeuvre n'est pas une erreure.

    Tout comme supprimer un utilisateur qui ne fait rien n'est pas fiable non plus, on pourrait avoir quelqu'un qui lit assiduement le chat sans parler.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre expérimenté
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Par défaut
    Je lui souhaite bonne chance à lire assidument un chat qui ne s'actualise pas

    Détecter la fermeture n'est pas faux c'est vrai, mais beaucoup trop imprécis à mon avis : problème pour onglets multiples, traffic supplémentaire, dépendance vis à vis des clients sans raison.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Par défaut
    Maintenant si l'une ni l'autre pas fiable quoi faire alors j'ai décidé de ne pas créer une table connectés, j'ai ajouté juste un champ dans la table membres, online et qui va être mis à jour à chaque fois, reçoit par exemple 1 si l''utilisateur est connecté mais il faut le remettre en 0 s'il est déconnecté. Mais je sais toujours pas comment le gérer

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La methode d'inactivité n'est pas précise mais elle deconnecte a coup sur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  10. #10
    FoxLeRenard
    Invité(e)
    Par défaut
    Bonjour,

    Un petit rappelle je crois

    Une session n'a besoins d'étre fermée, détruite.
    Elle se détruit toute seule quand session_cache_expire() est atteint

    Par contre lorsque des données traitées sont top secret banque etc ...
    Pour que le "milliardieme de milliard de chance" qu'un user récupére une session ID, d' un autre, on peut a sa demande vider la session et la détruire.

    MAIS CE N EST FAISABLE EN PHP QUE LORSQUE LE USER EST CONNECTE !!

    Vous savez bien , a moins d'étre sur le serveur, que vos PHP ne peuvent pas lister ni atteindre la liste des sessions non "détruites" !!

  11. #11
    Membre expérimenté
    Avatar de Caerbannog
    Inscrit en
    Novembre 2004
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 206
    Par défaut
    Genre impossible de lister le contenu du dossier où elles sont enregistrées ?

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Par défaut
    Tout d'abord, je dois détecter l'expiration dune session meme si l'utilisateur est toujours connecté. Je sais que la session a une durée, je pense par défaut 20 minutes je me trompe pas. Je veux que quand la session expirée, je fais une redirection vers la page quit.php et une mis à jour dans la table pour mettre la statut d'utilisateur en déconnecté. Comment détecter l'expiration d'une session svp?

  13. #13
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par debutantasp Voir le message
    Tout d'abord, je dois détecter l'expiration dune session meme si l'utilisateur est toujours connecté. Je sais que la session a une durée, je pense par défaut 20 minutes je me trompe pas. Je veux que quand la session expirée, je fais une redirection vers la page quit.php et une mis à jour dans la table pour mettre la statut d'utilisateur en déconnecté. Comment détecter l'expiration d'une session svp?
    Attention c' est le moment de regarder de trés pret son savoir ...

    PHP connait que le serveur
    Le visiteur peux rester une heure sur sa page et sa session sera perdue !!
    Mais PHP (je veux dire le serveur n'en sais rien)
    Quand aprés une heure de courses le visiteur change de page tu le vois comme un visiteur venant d'arriver !! et tu lui crée sa session !!

    Comprendo

  14. #14
    FoxLeRenard
    Invité(e)
    Par défaut
    RE-Bonjour ,

    Alors j'avais un doute pour ICI,
    Je me suis connecté, et j'ais été sur cette page.

    J'ais filé chez mon voisin il n'a pas de compte ici, donc avec son internet je vais sur une page ou j'ais un message
    il y a bien le voyant vert "connecté" moi je suis "chez mon voisin en visiteur non connecté"

    j'appelles ma femme qui quitte le forum et éteinds mon micro (c'était pas la peine ...)

    Moi chez mon voisin je fais des F5 toute les minutes, Il aura fallu environ 1/4 d'heure pour que le voyant passe au bleu foncé "non connecté"

    Voila qui confirme bien tout cela, mais pour étre "SUR DE CHEZ SUR"
    je fais l'inverse, je postes ce message, et je retourne chez mon voisin
    faire des F5 ... je rééditerais ce message a mon retour, quand il m'aura
    déclaré non connecté !!

    si bien que nous aurons testé tout les cas de figure, puisque la par contre je vien de poster mais je n'ais pas quitté ma page !!!

    A tout de suite

    Bon ça a l'air d'étre identique, 15 minutes
    au moins voila du concret qui montre bien comment ça se passe !!
    Dernière modification par FoxLeRenard ; 19/05/2009 à 18h05.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    381
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Maroc

    Informations forums :
    Inscription : Novembre 2007
    Messages : 381
    Par défaut
    Ok, on peut ignorer l'inactivité ou bien combien de temps l'utilisateur restera connecter lorsqu'il rejoint le site. Maintenant il faut contempler en si l'utilisateur ferme sans navigateur ou bien éteint sans ordinateur. Je pense de faire une requête pour compter la durée entre la dernière connexion au site et le dernier message envoyer par l'utilisateur. Comment faire la différence entre deux datetime pour avoir un résultat en minute? j'ai trouvé beaucoup d'exemple mais ils ne marchaient pas pour moi

  16. #16
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par debutantasp Voir le message
    Ok, on peut ignorer l'inactivité ou bien combien de temps l'utilisateur restera connecter lorsqu'il rejoint le site. Maintenant il faut contempler en si l'utilisateur ferme sans navigateur ou bien éteint sans ordinateur. Je pense de faire une requête pour compter la durée entre la dernière connexion au site et le dernier message envoyer par l'utilisateur. Comment faire la différence entre deux datetime pour avoir un résultat en minute? j'ai trouvé beaucoup d'exemple mais ils ne marchaient pas pour moi
    ça m'embétes de te dires ça, mais on a l'impression que tu as pas bien saisis mon test !!

    A quoi va te servir ce que tu veux faire ! puisque j'ais testé et je t'ais donné les résultats naturels quand

    1) on quitte le forum et éteind le micro
    2) on reste inactif sur une page ...

    C 'est du reste pour cette raison que les cookies sont utils,
    car si tu perds ta session, et que tu rebouges sur le forum, ta session toute neuve sera recrée sans que ton login te soit demandé !

Discussions similaires

  1. [Sécurité] Détruire une session
    Par Interface dans le forum Langage
    Réponses: 3
    Dernier message: 17/09/2007, 20h08
  2. détruire une session
    Par Maria1505 dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 24/08/2007, 11h26
  3. Détruire une session à la fermeture d'une fenètre.
    Par dell77 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 07/12/2006, 17h12
  4. Détruire une session
    Par perlgirl dans le forum Langage
    Réponses: 4
    Dernier message: 28/09/2006, 02h22
  5. [JSP] détruire une session
    Par villeneuvejsp dans le forum Servlets/JSP
    Réponses: 24
    Dernier message: 03/08/2005, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo