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 :

Fin de sessions en PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 173
    Points : 123
    Points
    123
    Par défaut Fin de sessions en PHP
    Bonjour ,

    Je cherche à détecter si une personne à quitter mon site au moment ou elle part. Pour détecter les visiteurs j'utilise les sessions. Il est facile de détecter une personne qui se connecte mais une personne qui n'est plus présente je ne vois pas.
    Existe-t'il un événement qui indique une fin de session (l'utilisateur quitte le site sans se délogguer, par exemple en fermant le browser) ou quelque chose du genre?

    merci de votre aide

    a+

  2. #2
    Invité
    Invité(e)
    Par défaut
    quand tu fermes le browser la session est detruite; tu peux aussi autoriser la session pour un laps de temps donné

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 173
    Points : 123
    Points
    123
    Par défaut
    Oui mais j'aimerai effacer de ma base de données certaines infos quand la session se détruit.. j'ai donc besoin d'un événement qui enclenche le script.

  4. #4
    Invité
    Invité(e)
    Par défaut
    désolé javais mal compris, je sais pas mais si c possible jaimerais bien savoir

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    il y a bien sesion_set_save_handler qui devrait te permettre de definir une fonction appelée à la destruction de la session : http://fr.php.net/manual/fr/function...ve-handler.php

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 173
    Points : 123
    Points
    123
    Par défaut
    merci!

    par contre, j'ai de la peine à comprendre comment ça marche..

    Voici l'exemple qu'ils donnent:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     <?php
    function open ($save_path, $session_name) {
      global $sess_save_path, $sess_session_name;
     
      $sess_save_path = $save_path;
      $sess_session_name = $session_name;
      return(true);
    }
     
    function close() {
      return(true);
    }
     
    function read ($id) {
      global $sess_save_path, $sess_session_name;
     
      $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "r")) {
        $sess_data = fread($fp, filesize($sess_file));
        return($sess_data);
      } else {
        return(""); // Doit retourner "" ici.
      }
     
    }
     
    function write ($id, $sess_data) {
      global $sess_save_path, $sess_session_name;
     
      $sess_file = "$sess_save_path/sess_$id";
      if ($fp = @fopen($sess_file, "w")) {
        return(fwrite($fp, $sess_data));
      } else {
        return(false);
      }
     
    }
     
    function destroy ($id) {
      global $sess_save_path, $sess_session_name;
     
      $sess_file = "$sess_save_path/sess_$id";
      return(@unlink($sess_file));
    }
     
    /*******************************************************
     * ATTENTION - Vous devrez implémenter un       *
     * collecteur de données obosolètes ici. *
     *******************************************************/
    function gc ($maxlifetime) {
      return true;
    }
     
    session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
     
    session_start();
     
    // Utilisez vos sessions comme d'habitude
    ?>
    faut-il implémenter dans chaque page toutes ces fonctions??

    dans mon cas, seulement destroy m'intéresse non?

    si c'est le cas.. par exemple dans la fonction destroy j'insère mon code qui efface mes donnés dans la bd et pis c'est bon?

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    en effet, seul destroy t'intéresse, mais j'ai peur qu'il ne faille toutes les redéfinir, puisqu'on ne peut pas en modifier qu'une seule...

    par contre, pour "est-ce qu'il faut le mettre sur chaque page" il faut faire de tests, je ne l'ai jamais utilisé... désolé

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 173
    Points : 123
    Points
    123
    Par défaut
    ok merci demain je te fais savoir

    pour la redéfinition.. c'est pas grave, je met en return true de partout et y a pas de probs

  9. #9
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par FredKéKé
    pour la redéfinition.. c'est pas grave, je met en return true de partout et y a pas de probs
    j'ai peur que ce ne soit pas une solution, appuie toi plutôt sur l'exemple qu'ils ont donnés, ç'a l'air d'être les fonctions par défaut

  10. #10
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    Au pire tu inclus ton fichier sur toutes tes pages utilisant les sessions.

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 173
    Points : 123
    Points
    123
    Par défaut
    marche po

  12. #12
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Points : 269
    Points
    269
    Par défaut
    Franchement, je me demande si c'est possible. j'ai jamais vu de moyen de détecter la destruction d'une session lorsqu l'on ferme la navigateur
    Le meilleur moyen est de détecter si le temps de ta session a expiré, si oui, tu détruis les informations que tu veux dans ta base.

  13. #13
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Points : 1 071
    Points
    1 071
    Par défaut
    de toute façon, ça t'aurait rien apporter pour ton pb, tu veux detruire les sessions qd un visiteur quitte le site sans réellement se déconnecter.
    Cette méthode destroy ne sera pas plus appelée que si elle n'était pas redéfinie.

    Pour détruire ces sessions, le mieux, c'est à chaque gars qui se connecte, tu cherche les sessions datant de plus de x mins, et tu les effaces.

    Il n'y a aucun moyen simple et fiable de savoir qu'un visiteur est parti, hormis le faite de se dire que si on a pas de nouvelles, c'est qu'il est parti.

    message croisé avec Steph82, qui pense la meme chose

  14. #14
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 173
    Points : 123
    Points
    123
    Par défaut
    ok.. donc c'est la merde..

    merci

    a +

  15. #15
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Points : 269
    Points
    269
    Par défaut
    Bah faut pas être défetiste . Il suffit de stocker les id de sessions et de mettre à jour le temps de la derniere session dans une table.
    Et dès que le temps de ta session + un temps que tu définis est dépassé, tu delete l'enregistrement de la table, et tu fais ton traitement s'il y a lieu.
    Ce sera pas en temps réel, c'est le seul défaut.

Discussions similaires

  1. [AJAX] détecter fin de session PHP en Javascript
    Par jason69 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/06/2008, 11h44
  2. [Tomcat]échange de session entre php et java
    Par benwa dans le forum Tomcat et TomEE
    Réponses: 18
    Dernier message: 05/06/2007, 17h01
  3. message d'erreur perso lors fin de session
    Par zorba49 dans le forum ASP
    Réponses: 1
    Dernier message: 26/08/2005, 11h12
  4. detruire une cookie après fin de session
    Par MASSAKA dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 25/08/2005, 16h02

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