Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 18h13   #1
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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.
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 18h30   #2
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
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).
Climoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 19h04   #3
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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 :
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 :
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 ?
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 21h52   #4
Membre confirmé
 
Homme Clément
Développeur informatique
Inscription : décembre 2006
Messages : 213
Détails du profil
Informations personnelles :
Nom : Homme Clément
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : décembre 2006
Messages : 213
Points : 277
Points : 277
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).
Climoo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 08h11   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h21   #6
Débutant
 
Inscription : avril 2005
Messages : 464
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 464
Points : 69
Points : 69
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 ?
madina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h30   #7
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
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.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h54   #8
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h59.


 
 
 
 
Partenaires

Hébergement Web