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 quand un onglet Firefox se ferme


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut Détruire une session quand un onglet Firefox se ferme
    Bonjour,

    Mon application fonctionnant sous Firefox, la session crée ne se détruit que si le navigateur Firefox est fermé entièrement.

    Par contre si je ferme l'onglet auquel se trouve l’application, la session n'est pas détruite : j'ai la possibilité d’exécuter une page sans se connecter.

    Comment faire pour détruire une session à la fermeture d'un onglet ?

    Merci des solutions.


    Cordialement.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    En général, on ne souhaite pas détruire les sessions à la fermeture d'un onglet.
    Mais si c'est ce que tu veux faire, je pense que tu vas devoir utiliser un peu de javascript et même d'Ajax.
    Tu peux commencer par récupérer l'événement "onunload" sur ta page (ou un autre qui ressemble).
    Puis, dans la fonctionne appelée lors de cet événement, tu fais un appel ajax vers ton serveur pour détuire la session (jQuery est ton ami).

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Bonjour,

    Donc si je comprends bien, il y'a pas un moment où il est préférable de détruire une session ?

    Pour l'evenement onunload : j'ai l'ai mis dans le <body>en faisant
    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
    <script type="text/javascript">
     function maFonction(){
    var xhr = getXhr();
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function(){
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200){
    leselect = xhr.responseText;
    }
    }
    // Ici on va voir comment faire du post
    xhr.open("POST","destroy_session.php",true);  
    // ne pas oublier ça pour le post
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    // ne pas oublier de poster les arguments
    xhr.send();
    
        }
     </script>
     <body onunload="maFonction();" >
    Dans destroy_session :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $_SESSION = array(); // on réécrit le tableau
    session_destroy(); // on détruit le tableau réécrit
    	?>
    mais ça détruit pas la session si je ferme l'onglet ?

    Y'a-t-il n aménagement à faire ?

  4. #4
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 242
    Par défaut
    Ton code m'a l'air correct. Si ta fonction javascript est bien appelée, et que ton appel Ajax est correct, alors ta session sera bien supprimée.
    • Vérifie bien que l'événément onunload appelle bien ta fonction (utilise firebug en débuggeur js ou bien met un alert dans ta fonction pour voir).
    • Vérifie bien que ta page php est appelée par la suite (toujours avec firebug, regarde ce qui passe sur le réseau, ou bien y'a aussi Ctrl+Maj+K qui est très bien).

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    En fait, il est préférable d'utiliser l'événement onbeforeunload au lieu de onunload.
    D'autre part, avant session_destroy(), ça peut être utile de mettre un petit session_start() non ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 469
    Par défaut
    Bonjour,

    C'est des pour des raisons de sécurité que j'ai voulu pousser en détruisant la session à la fermeture d'un onglet.

    Si c'est pas nécessaire, y'a t-il vraiment besoin ?

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Attention avec onbeforeunload car si je ne me trompe pas il sera appelé dès qu'un changement de page à lieux , pas seulement quand une page est fermée.

    Pour ce qui est de la nécessité de détruire la session à la fermeture de l'onglet il n'ya que toi qui peux en décider selon la criticité de ton environnement.
    La plus part du temps on se contente de la fermeture du navigateur.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par grunk
    Attention avec onbeforeunload car si je ne me trompe pas il sera appelé dès qu'un changement de page à lieux , pas seulement quand une page est fermée.
    C'est pas faux...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Réponses: 9
    Dernier message: 14/09/2007, 19h07
  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