Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2733 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  détruire session

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

détruire session

n°984610
aquastar
Posté le 17-02-2005 à 10:49:14  profilanswer
 


slt a tous
 
est ce qu'une session est détruite automatiquement lorsque l'on ferme le navigateur
sinon comment le faire
 
merci

mood
Publicité
Posté le 17-02-2005 à 10:49:14  profilanswer
 

n°984613
Hermes le ​Messager
Breton Quiétiste
Posté le 17-02-2005 à 10:51:48  profilanswer
 

aquastar a écrit :

slt a tous
 
est ce qu'une session est détruite automatiquement lorsque l'on ferme le navigateur
sinon comment le faire
 
merci


 
oui

n°984630
aquastar
Posté le 17-02-2005 à 11:01:18  profilanswer
 

oui mais quand je regarde dans le répertoire où est stocké la session il y a toujours un fichier de type Internet Signup qu'est ce que c'est?

n°985760
aquastar
Posté le 18-02-2005 à 10:16:51  profilanswer
 

je me rend compte que la session n'est pas détruite lorsque l'on ferme le navigateur !!!!!!!!!!
qui peux m'aider???????

n°985765
Xav_
The only one...
Posté le 18-02-2005 à 10:28:43  profilanswer
 

ya un timeout, si tu rouvre le navigateur au bout de 2 sec, elle est pas détruite, mais après elle va l'etre...
c'est paramètrable dans ton php.ini ou via ini_set si tu n'a pas accès à ton fichier de conf...
 
regarde du coté de:
- session.cookie_lifetime
- session.gc_maxlifetime
 
EDIT: et pitete celle-la aussi  
- session.cache_expire


Message édité par Xav_ le 18-02-2005 à 10:29:55

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°985771
aquastar
Posté le 18-02-2005 à 10:37:07  profilanswer
 

j'ai accés à mon fichier de conf et mon session.cookie_lifetime =0 donc le cookie a une durée de vie jusqu'à ce que le navigateur soit fermé
 
mais dans mes fichiers php je n'utilise pas les sessions du moins je pense car je fais juste un session.auto_start() au début de chaque page!!!!!!!!
que me conseillez vous?

n°985799
Dj YeLL
$question = $to_be || !$to_be;
Posté le 18-02-2005 à 10:47:26  profilanswer
 

aquastar a écrit :

j'ai accés à mon fichier de conf et mon session.cookie_lifetime =0 donc le cookie a une durée de vie jusqu'à ce que le navigateur soit fermé
 
mais dans mes fichiers php je n'utilise pas les sessions du moins je pense car je fais juste un session.auto_start() au début de chaque page!!!!!!!!
que me conseillez vous?


 
Euh, comme ça, au hasard ? ... De lire la doc non ? :D


---------------
Gamertag: CoteBlack YeLL
n°985882
Xav_
The only one...
Posté le 18-02-2005 à 11:20:21  profilanswer
 

je te file 3 variables à regarder, tu vois que la premiere est bien réglé donc tu t'arrete là...
Ben ouais, comme l'a dis Dj Yell --> RTFM !!!


Message édité par Xav_ le 18-02-2005 à 11:20:40

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°985907
aquastar
Posté le 18-02-2005 à 11:27:45  profilanswer
 

je viens de tester les 3 variables et aucun changement!!!!

n°985930
Xav_
The only one...
Posté le 18-02-2005 à 11:36:07  profilanswer
 

http://doc.domainepublic.net/php/d [...] etime.html
ça semble etre "session.gc_maxlifetime" qui spécifie la durée de vie des infos de session sur le serveur (en seconde)  
c'est de l'ordre de 1440 à l'origine, ça fait quand meme 24 minutes !!!
t'a essayé en baissant cette valeur ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
mood
Publicité
Posté le 18-02-2005 à 11:36:07  profilanswer
 

n°985939
aquastar
Posté le 18-02-2005 à 11:39:00  profilanswer
 

je l'i testé à 0 et pareil

n°985957
Xav_
The only one...
Posté le 18-02-2005 à 11:48:38  profilanswer
 

aquastar a écrit :

je l'i testé à 0 et pareil


sauf qu'en général pour ce genre de variable, on met "0" quand on veut dire "pas de limite", donc "1" serait plus approprié pour que ça expire vite ;) (mais tu as peut etre déjà essayé aussi)...


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°985988
aquastar
Posté le 18-02-2005 à 12:10:36  profilanswer
 

nan 1 ca change rien!!!!

n°986123
cerel
Posté le 18-02-2005 à 13:58:25  profilanswer
 

Je vais apporter mon grain de sel.
 
Premierement, j'ai l'impression que tu n'as pas tout a fait compris comment fonctionne les sessions en php. Deja, php c'est un langage cote serveur, en aucun cas il peut "savoir" quand le visiteur ferme son navigateur... Donc a la quesion "est ce qu'une session est détruite automatiquement lorsque l'on ferme le navigateur ", je repons "non, impossible".
 
Comment fait php pour associer une session a un visiteur ?? Pour ce faire, php a besoin d'un identifiant unique pour chaque visiteur. C'est le "phpsessionid". La il existe 2 facons d'associer l'id au visiteur. La premiere maniere de l'associer est d'utiliser des cookies. Ainsi des la creation de la session, un cookie est cree chez le visiteur avec l'id de la session.
La deuxieme facon de le faire, et qui est utilise quand le visiteur n'accepte pas les cookies, est de "modifier" les liens dans la page que le visiteur visite. Ainsi on va "coller" l'id de la session dans les liens. De cette facon, tant que le visiteur utilise les liens dans la page, php connaitra le session id.
 
Que se passe-t-il quand le visiteur ferme son navigateur ?  
1) Si la session utilise des cookies, le cookie est efface par le navigateur (mais la session sur le serveur existe encore car php ne sait pas ce que fait le visiteur sur sa machine).
2) Si le visiteur n'avait pas de cookie, rien n'est fait (concernant la session). Seulement si le visiteur revient sur la page sans que le session id ne soit colle dans l'adresse, alors une nouvelle session est cree (et le session id sera colle dans tous les liens de la page).
 
Comment fait php pour effacer les sessions ?? Il se base sur en tout cas 2 parametres : le temps de vie de la session, et le "gc" (garbage collector).
Le garbage collector est un mecanisme qui sert a php de verifier ce qui doit etre efface ou pas. Il vas par exemple lancer le gc toutes les minutes pour voir si des sessions ont depasse la duree de vie. Si tel est le cas, alors la session est detruite.
 
Ces deux parametres sont importants. En effet il ne sert pas a grand chose d'avoir un gc toutes les 10 secondes si la duree de la session est illimitee. Ou bien cela ne sert a rien d'avoir la duree de la session a 1 minutes, si le gc n'est jamais appele...
 
Encore une petite precision, la duree de vie de la session n'est pas une duree "limite". Mais plutot une duree "d'expiration". En gros tant que le visiteur se promene sur le site, la session est rafraichie. Mais une fois que ce dernier parts, la session n'est plus mise a jour, et de ce fait elle va expirer.
 
 
 
Comment faire pour effacer la session alors ?
Ben il existe plusieurs "solutions".  
Laisser php s'en occuper.
 
Une autre solution consiste a "s'en charger soit meme". Comment ?
En metant en place un systeme de "log out" sur le site. En effet, la pluspart du temps il existe "2 types" de sessions.
La session "generique" : des que le vistieur arrive sur le site, la session est cree.
La session "specifique" : la session est cree lorsque le visiteur fait quelque chose de special. Par exemple si ce dernier se "logue" sur le site.
 
En integrant un systeme de "log out" sur le site, on permet au visiteur de detruire la session specifique.
Pour se faire il faut simplement faire un "session_destroy()" lors du "log out".
 
Certains sites, peuvent egalement utiliser les deux types de sessions a la fois. La session generique peut par exemple contenir des variables pour permetre aux pages de savoir si le visiteur est logue ou non ($pseudo, $userid, $loged ...). Du coup, la session generique n'aura pas (ou aura des valeurs par defaut) les variables de login.
Dans le cadre d'un site qui melange les deux types de sessions, il peut y avoir un effet "bizzare" (mais neanmoins logique) lors de la destruction de la session specifique.
 
En effet, imaginons que le site cree une session "generique" dans "index.php". Lorsque l'user se delogue, et que sa session est detruite, une generique va etre cree. Ceci vient du fait que la pluspart du temps, lorsqu'un user est delogue, il est redirige vers l'index du site (et pas sur un autre site), donc du coup, une autre session sera cree.
 
 
Pour finir, je tiens a parler un peu des problemes de securite concernant les sessions.
Les sessions sont sotckees dans un repertoire sur le serveur. Ce repertoire est le meme pour tous les sites php qu'heberge se serveur. Donc du coup, un site "voisin" pourrait eventuellement "lire" une session d'un autre site. Mais avant qu'il puisse le faire, il devrait connaitre le session id de la session, ce qui n'est pas facil.
 
Il existe des methodes pour "eviter" ou minimiser ce risque. Par exemple crypter la session. Une autre methode consisterai a creer son propre "session handler" et de stocker les session ailleurs. Par exemple on pourrait stocker les sessions directement dans la BDD dans une table "sessions". Personnellement c'est ce que je fais, il y a d'autre sites qui le font. Si je me trompe pas, il y a phpbb qui le fait, ainsi que quelques CMS (Content Management System) comme par exemple Postnuke.
 
 
 
Donc voila, j'espere avoir clarifie un peu le fonctionnement des sessions.
 
aquastar : Si tu utilise des sessions "specifique", alors utilise un "session_destroy()" pour effacer ta session. Si tu utilise des sessions "generiques" alors laisse php faire son boulot.
 
PS :
En php il n'y a qu'un seul "type" de session. J'ai introduit les termes de "generique" et "specifique" afin de differencier la facon dont les sessions etaient crees, utilisees, et detruites.

n°986492
aquastar
Posté le 18-02-2005 à 17:49:16  profilanswer
 

merci pour tes eclaircissement
 
j'utilise des sessions psécifdiques donc avec session_destroy() donc quand l'user se déconnecte la session est bien détruite  
mais mon pb cété quand l'user ferme le navigateur sans fermer la session....
merci

n°986498
Xav_
The only one...
Posté le 18-02-2005 à 17:53:39  profilanswer
 

Citation :

mais mon pb cété quand l'user ferme le navigateur sans fermer la session...


ben comme te l'a dis Cerel, le serveur PHP n'est pas chez le client --> il ne sait pas que le navigateur à été fermé, donc il faut attendre que les données "expirent" et ça va se faire avec les durées spécifiées dans les variables que je t'ai filé normalement


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
n°986501
aquastar
Posté le 18-02-2005 à 17:56:23  profilanswer
 

j'ai compris merci a tous

n°986577
Xav_
The only one...
Posté le 18-02-2005 à 20:00:20  profilanswer
 

de rien :jap:


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  détruire session

 

Sujets relatifs
Session impossible avec IE mais Firefox ok !?[PHP] s'marrant ça, session.save_path (in php.ini) n'a pas d'influence
Session Id + PopupFin de session
objets et sessionMàj config client ($_SESSION) si màj de config serveur (BDD) [RESOLU]
Détruire une variable dans $_SESSION[PHP] détruire toutes les var d'une session sauf certaines...
détruire une session à la fermeture du navigateur !?! (réponse inside) 
Plus de sujets relatifs à : détruire session


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR