détruire une session à la fermeture du navigateur !?! (réponse inside)

détruire une session à la fermeture du navigateur !?! (réponse inside) - PHP - Programmation

Marsh Posté le 25-04-2003 à 14:41:03    

Voilà mon problème : je voudrais que lorsque l'utilisateur ferme son navigateur, la session en cours soit détruite.
 
Seulement, après recherche, il apparait que cela est impossible :/
 
Mais, je me demandais quand même s'il n'était pas possible de détecter la fermeture du navigateur en javascript (je précise au passage que je n'y connais pas grand chose dans ce langage) et d'appeler un script PHP qui détruirait la session : Qu'en pensez-vous ?
 
 
EDIT : réponse page 3 !!!


Message édité par nero27 le 29-04-2003 à 12:15:32
Reply

Marsh Posté le 25-04-2003 à 14:41:03   

Reply

Marsh Posté le 25-04-2003 à 14:43:30    

Heu... Les sessions php sont détruites à la fermeture du navigateur...  :heink:  Enfin, en tout cas, sur IE 5 et 6, Mozilla 1+ et Opera 6+  :heink:

Reply

Marsh Posté le 25-04-2003 à 14:53:05    

Elle n'est pas détruite chez moi pourtant :heink:  
 
(IE 5.5)

Reply

Marsh Posté le 25-04-2003 à 14:55:28    

nero27 a écrit :

Elle n'est pas détruite chez moi pourtant :heink:  
 
(IE 5.5)


 
hé ??  [:totozzz]  
 
C'est quoi ta session miraculeuse ? Tu n'aurais pas des cookies qui trainent en plus par hasard ? Laisse-moi deviner... Tu as copié un script qui utilisent des sessions, et la session ne se ferme pas à la fermeture du navigateur... C'est bien ça ?  :whistle:

Reply

Marsh Posté le 25-04-2003 à 14:57:47    

Hermes le Messager a écrit :


 
hé ??  [:totozzz]  
 
C'est quoi ta session miraculeuse ? Tu n'aurais pas des cookies qui trainent en plus par hasard ? Laisse-moi deviner... Tu as copié un script qui utilisent des sessions, et la session ne se ferme pas à la fermeture du navigateur... C'est bien ça ?  :whistle:  


 
En fait c tout con, cf php.ini

Reply

Marsh Posté le 25-04-2003 à 14:57:51    

Hermes le Messager a écrit :


 
hé ??  [:totozzz]  
 
C'est quoi ta session miraculeuse ? Tu n'aurais pas des cookies qui trainent en plus par hasard ? Laisse-moi deviner... Tu as copié un script qui utilisent des sessions, et la session ne se ferme pas à la fermeture du navigateur... C'est bien ça ?  :whistle:  


Non, j'ai créé moi-même le script et je n'utilise pas les cookies (désactivés dans le fichier php.ini) !

Reply

Marsh Posté le 25-04-2003 à 14:58:28    

samuelp a écrit :


 
En fait c tout con, cf php.ini


on règle ça dans php.ini ?
 
C'est quelle valeur qu'il faut changer ?

Reply

Marsh Posté le 25-04-2003 à 15:03:05    

nero27 a écrit :


Non, j'ai créé moi-même le script et je n'utilise pas les cookies (désactivés dans le fichier php.ini) !


 
Alors, tu es l'heureux possesseur du SEUL navigateur que je connais qui ne ferme pas les sessions...  [:totozzz]

Reply

Marsh Posté le 25-04-2003 à 15:07:22    

Hermes le Messager a écrit :


 
Alors, tu es l'heureux possesseur du SEUL navigateur que je connais qui ne ferme pas les sessions...  [:totozzz]  


Qu'est-ce que tu entends par fermer la session !
 
Parce que oui, quand je  ferme le navigateur et que je le réouvre, la session change. Mais moi ce que je veux, c'est que quand je ferme IE, c'est que la session soit effacée du dossier sessions du serveur !

Reply

Marsh Posté le 25-04-2003 à 15:25:28    

nero27 a écrit :


Qu'est-ce que tu entends par fermer la session !
 
Parce que oui, quand je  ferme le navigateur et que je le réouvre, la session change. Mais moi ce que je veux, c'est que quand je ferme IE, c'est que la session soit effacée du dossier sessions du serveur !


 
pourquoi faire ?  :??:

Reply

Marsh Posté le 25-04-2003 à 15:25:28   

Reply

Marsh Posté le 25-04-2003 à 15:41:09    

Hermes le Messager a écrit :


 
pourquoi faire ?  :??:  


pour éviter qu'un autre utilisateur se serve du cache de IE pour se connecter sur une session "résiduelle" et donc utiliser les habilitations d'un autre !

Reply

Marsh Posté le 25-04-2003 à 15:42:14    

si tu définis un temps d'expiration du cookie de session à 0 le cookie est détruit à la fermeture du browser
 
sans cookie, et avec un id d'url inexistant (puisque navigateur fermé) il est impossible de récupérer la session précédente
 
je vois pas pourquoi faut obligatoirement lancer le garbage ...

Reply

Marsh Posté le 25-04-2003 à 15:45:18    

et bien, dans le cache de IE, l'url reste avec le SID en bout de ligne :/

Reply

Marsh Posté le 25-04-2003 à 15:56:24    

voila pq il est intéressant pour l'utilisateur d'utiliser un bouton "déconnexion" comme sur hotmail par exemple...
 
tu peux pas le faire à sa place.
Ce que tu peux faire, c'est diminuer le temps de vie des fichiers sessions sur le serveur en nettoyant fréquemment le répertoire.


---------------
...oups kernel error...
Reply

Marsh Posté le 25-04-2003 à 16:03:35    

Ok, mais, j'ai intérêt d'avoir des utilisateurs très attentifs, parce que mon application est qd mm destinée à des utilisateurs non informaticiens qui oublieront 2 fois sur 3 de se délogguer :/
 
De plus, il y a toujours des petits malins qui sont capables de comprendre qu'en utilisant l'URL d'un autre, il est possible d'utiliser ses habilitations !
 
Donc, pour en revenir à mon idée départ, n'est-il pas possible de lancer un script PHP (qui effacerait la session) par le biais de JS lors de la fermeture du navigateur ?

Reply

Marsh Posté le 25-04-2003 à 16:32:36    

faudrait savoir hein
 
soit ce sont pas des informaticiens et ils savent même pas où se trouve les fichiers de cache
 
soit ils savent et alors authentification avec déconnexion obligatoire...

Reply

Marsh Posté le 25-04-2003 à 16:53:32    

Sh@rdar a écrit :

faudrait savoir hein
 
soit ce sont pas des informaticiens et ils savent même pas où se trouve les fichiers de cache
 
soit ils savent et alors authentification avec déconnexion obligatoire...


bah en fait, c'est pas des informaticiens, mais y'en a qd mm 1 ou 2 qui sont un petit peu plus malins que les autres ;)

Reply

Marsh Posté le 25-04-2003 à 16:57:50    

associe une session avec une IP, tu vas voir qu'ils feront ptet moins les malins deja :) (valable si ton site est plutot destiné à bcp de machines et non pas une borne pour 30 personnes)

Reply

Marsh Posté le 25-04-2003 à 17:00:21    

masure a écrit :

associe une session avec une IP, tu vas voir qu'ils feront ptet moins les malins deja :) (valable si ton site est plutot destiné à bcp de machines et non pas une borne pour 30 personnes)


et bien, c'est ça lme problème, c'est que plusieurs personnes peuvent utiliser la même machine :sweat:

Reply

Marsh Posté le 25-04-2003 à 17:04:52    

Ya ptet moyen de bricoler ca avec le http_referer stocké dans une var de session. Un truc qui te jette si ton referer ne correspond pas avec celui de la session.
 
un gars se balade tranquille :
 
referrer du server = referrer de la session
 
ton gars ferme ie et un autre passe derriere :
 
refferer du server != referrer de session puisque IE reouvert ...
 
Enfin c'est vraiment se raccrocher aux branches mais si tu veux faire chier les ptits malins, la je crois qu'ils vont pleurer

Reply

Marsh Posté le 25-04-2003 à 17:10:33    

je connais pas ce truc : je vais regarder ça de plus près ;)

Reply

Marsh Posté le 25-04-2003 à 17:22:15    

Salut
Je me suis posé la même question que toi et je pense avoir trouvé une solution : tu crées un une page avec deux cadres : un qui occupe une largeur de 1 pixel et l'autre le reste de la page.
Quand l'utilisateur est sur ton site, il navigue dans le second cadre, et dans le premier tu mets un événement javascript onUnload qui ouvre un fichier php qui ferme la session.
Ca donne :
 
 
<frameset rows="*" cols="1,*" framespacing="0" frameborder="NO" border="0">
  <frame src="deconnexion.htm" name="detect">
  <frame src="pageprincipale.htm" name="page" noresize>
</frameset>
<noframes><body>
 
</body></noframes>
</html>
 
 
 
Pour la page qui contient les cadres
 
 
Dans deconnexion.htm tu mets :
 
 
<HTML>
<HEAD>
</HEAD>
<BODY onUnload="open('logout.php';);">
</BODY>
</HTML>
 
 
Ce qui ouvre logout.php qui te ferme la session
L'inconvénient c que ca fait une popup mais bon ...
Je peux pas te garantir a 100% que ca marche mais chez moi ca fonctionne
Ca pose un probleme si l'utilisateur veut actualiser sa page aussi mais on doit pouvoir y remédier
Voila

Reply

Marsh Posté le 25-04-2003 à 17:27:38    

y'a de l'idée :jap:
 
Y'a peut-être moyen de mettre la frame de gauche dans une iframe, non ?
Ca règlerait peut-être le pb de l'actualistation :??:

Reply

Marsh Posté le 25-04-2003 à 17:27:42    

luap7 a écrit :


<BODY onUnload="open('logout.php';);">


 
Chez moi, ça va rien faire ce truc.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 25-04-2003 à 17:28:58    

kadreg a écrit :


 
Chez moi, ça va rien faire ce truc.


pkoi, parce que tu as désactivé le javascript ?
 
Moi, j'ai pas de pbs là-dessus, c'est pour un intranet d'entreprise : tous les postes sont réglés par nos soins ;)

Reply

Marsh Posté le 25-04-2003 à 17:30:54    

nero27 a écrit :


pkoi, parce que tu as désactivé le javascript ?


 
Parceque mozilla n'honore pas les open et les close dans une fonction OnLoad et OnUnload


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 25-04-2003 à 17:34:29    

Du moment qu'ils utilisent IE sur les pc ou tu veux utiliser ton truc ca va ...
Pour les iframes je sais pas si ca peut marcher je vais tester mais bon c pareil ca marchera que avec IE ...

Reply

Marsh Posté le 25-04-2003 à 17:35:09    

kadreg a écrit :


 
Parceque mozilla n'honore pas les open et les close dans une fonction OnLoad et OnUnload


ca va, ici c'est IE !
 
Mais c'est sûr que mozilla évite les problèmes de pop up de cette façon :sol:

Reply

Marsh Posté le 25-04-2003 à 18:00:00    

J'ai essayé avec une iframe mais ca a pas marche :(  
Mais j'ai voulu vérifier et en fait l'actualisation ca marchait meme avec une frame (en tt cas chez moi) j'avais pas teste... :sleep:

Reply

Marsh Posté le 25-04-2003 à 18:25:20    

suffit d'utiliser des cookies au lieu du sid dans les urls :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-04-2003 à 22:17:41    

Tu peux désactiver l'affichage du SID dans l'url.....
Voir "--enable-trans-sid" dans php.ini
 
Pourquoi vous prendre la tête???? :pfff:  
 
Perso je fais ça:
 
- j'arrive sur le site page index....
- je vais sur la zone admin ou client.. par ex...
- la page d'authentification s'ouvre...
- et se redirige vers la page du menu de l'utilisateur (celle ci ne dois pas être fermée ni actualisée car javascript de fermeture lié à l'événement "unload" )
- si je clique sur une action du menu (un lien) cela ouvre une autre page (target='_blank';)... et c'est sur ces page que l'utilisateur travaille..
 
Ainsi il peux faire ce qu'il veux, quand il a fini de travailler il ferme sa page et la session se ferme, les variables de session sont détruites etc.. etc.. (stats)
 
Cela en complément d'un lien "déconnexion" sur toutes les pages (ne réagissant pas tout le tps de la même façon mais bon..)
 
Si tu TAF sur ton propre serveur, tu peux affecter un nom de session différent pour chacun de tes clients.. (son nom plus un "ID" par ex..) Moi je voulais l'utiliser pour mes stats, toi ptetre tu peux en faire une sécurité..


Message édité par chrono le 25-04-2003 à 22:30:33
Reply

Marsh Posté le 25-04-2003 à 22:30:16    

Chrono a écrit :

Tu peux désactiver l'affichage du SID dans l'url.....
 
 
Pourquoi vous prendre la tête???? :pfff:  
 
Perso je fais ça:
 
- j'arrive sur le site page index....
- je vais sur la zone admin ou client.. par ex...
- la page d'authentification s'ouvre...
- et se redirige vers la page du menu de l'utilisateur (celle ci ne dois pas être fermée ni actualisée car javascript de fermeture lié à l'événement "unload" )
- si je clique sur une action du menu (un lien) cela ouvre une autre page (target='_blank';)... et c'est sur ces page que l'utilisateur travaille..
 
Ainsi il peux faire ce qu'il veux, quand il a fini de travailler il ferme sa page et la session se ferme, les variables de session sont détruites etc.. etc.. (stats)
 

[:vomi]
et c'est faux en plus :o


Message édité par the real moins moins le 25-04-2003 à 22:32:52

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-04-2003 à 22:30:53    

pkoi?

Reply

Marsh Posté le 25-04-2003 à 22:32:27    

tu dis que tu n'utilises pas le sid, tu utilises donc un cookie à la place pour gerer tes sessions
si tu ouvres une nvlle fenetre, c'est pas pour ça que le navigateur va tuer le cookie quand elle sera fermée, vu qu'il y a tjs l'autre d'ouverte
et puis baser ta securité sur le fait d'ouvrir une autre fenetre (ce qui est deja tres laid) franchement :sarcastic:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-04-2003 à 22:35:54    

j'utilise le SID mais il n'est pas apparent dans l'url grace à "--enable-trans-sid" du php.ini...
je n'utilise pas de cookie T ouf ! :ouch:  
 
Autrement, ca fais très cool..
- J'arrive sur la page de menu (une seule page d'ouverte)
- j'ouvre une page (elle s'ouvre en plein écran, pour l'user C invisible..) donc 2 pages..
 
Sérieusement ça fais propre..


Message édité par chrono le 25-04-2003 à 22:41:08
Reply

Marsh Posté le 25-04-2003 à 22:45:12    


 
Ben oui mais CT la seule façon que G trouvé pour répondre à mon besoin..
 
Javascript.. ok tant pis..
target='_blank' car il fô pouvoir travailler en même temps sur plusieurs pages ouvertes..


Message édité par chrono le 25-04-2003 à 22:46:01
Reply

Marsh Posté le 25-04-2003 à 22:50:06    

Chrono a écrit :

j'utilise le SID mais il n'est pas apparent dans l'url grace à "--enable-trans-sid" du php.ini...
je n'utilise pas de cookie T ouf ! :ouch:  
 
Autrement, ca fais très cool..
- J'arrive sur la page de menu (une seule page d'ouverte)
- j'ouvre une page (elle s'ouvre en plein écran, pour l'user C invisible..) donc 2 pages..
 
Sérieusement ça fais propre..

Moi, je trouve pas ça propre.
Et les utilisateur en général, détestent cacher leur barre des taches. Si tu aimes faire peur aux gens qui n'y conaisssent rien en informatique (du genre qui sont perdus quand une feuille se coince dans l'imprimante) tu t'y prends bien. ;)
Et si c'est du plein écran mais sans cacher la barre des taches alors on voit bien qu'il y a deux fenêtre d'ouverte.
 
Je peux parler de ce problème, j'ai a ma charge une centaine de PC là où je bosses et je peux te dire que les utilisateurs peuvent ce révéler très emmerdant quand tu leur changes leurs habitudes.

Reply

Marsh Posté le 25-04-2003 à 22:54:55    

Je ne l'ouvre pas en PLEIN écran sans les barres.. :pfff:
 
Elle s'ouvre entièrement quoi.. en grand...
 
Ben je me suis prêtre mal exprimé..Désolé
 
Mais il voit la page ou il travaille.. normal..
Et la page de menu (qu'il ne fô pas fermer.. mais C indiqué)
C'est indispenssable à mon cahier des charges donc je ne vois pas le problème..


Message édité par chrono le 25-04-2003 à 22:57:13
Reply

Marsh Posté le 25-04-2003 à 23:02:15    

Chrono a écrit :

j'utilise le SID mais il n'est pas apparent dans l'url grace à "--enable-trans-sid" du php.ini...
je n'utilise pas de cookie T ouf ! :ouch:  

et il est ou alors le sid a ton avis :lol:
 
 
(et keske ça a de ouf d'utiliser un cookie correctement :heink:)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 25-04-2003 à 23:04:12    

je n'utilise pas de cookie car les clients n'aiment pas les cookies...
 
Le SID est dans l'url mais invisible   :sarcastic:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed