Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
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 10/05/2006, 18h21   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Par défaut [Sécurité] Détruire la session au bout de x minutes d'inactivité : même si actif...

Bonjour,

Je continue la lutte contre les sessions php et là un nouvel obstacle se présente.

Je veux qu'après x minutes d'inactivité, la session se détruise toute seule.
J'ai donc commis la chose suivante :

1) Lors de l'identification:
Code :
1
2
 
$_SESSION['dernier_acces']=time();
2) Dans les pages :
Code :
1
2
3
4
5
 
if(time()-$_SESSION['dernier_acces']>x) 
{
  session_destroy(); 
}
Mais là il se trouve que même si l'utilisateur s'excite comme un fou sur le site, il est de toute façon déconnecté sans vergogne au bout de x minutes.


D'où ma question audacieuse : Où ai-je bavé ?

Et j'en profite même pour poser une deuxième question tout aussi audacieuse : qu'elle est la valeur convenable pour x, du point de vue de l'ergonomie et de la sécurité ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 18h32   #2
Nouveau Membre du Club
 
Avatar de goldorax113
 
Étudiant
Inscription : octobre 2002
Messages : 111
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2002
Messages : 111
Points : 32
Points : 32
salut,

tu dis que tu fais

Code :
 $_SESSION['dernier_acces']=time();
lors de l'indentification, mais faudrait it pas que tu le fasse à chaque fois qu'une page est chargée

parce que sinon c normal qu'au bout de x minutes l'user se fasse deconnecter...

Nico
goldorax113 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 18h36   #3
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Oui, mais non, non ?

Si je fais, sur chaque page:

Code :
1
2
3
4
5
6
 
$_SESSION['dernier_acces']=time(); 
if(time()-$_SESSION['dernier_acces']>10) 
{
  session_destroy(); 
}
Ici $_SESSION['dernier_acces'] va être égal à time(), donc la condition ne sera jamais validé.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 18h55   #4
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Bon alors j'ai essayé ça :

Lors de l'identification :
Code :
1
2
 
$_SESSION['premier_acces']=time();
A chaque page :
Code :
1
2
3
4
5
6
 
$_SESSION['dernier_acces']=time();
if($_SESSION['dernier_acces']-$_SESSION['premier_acces']>10) 
{
  session_destroy(); 
}
Je pensais que cela allait fonctionner, mais non, au bout de 10 secondes, actif ou non, l'utilisateur est déconnecté.

**bon c'est normal que ça foire en fait. je fais quoi alors ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 19h12   #5
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Et simplement

Code :
1
2
3
4
5
6
7
8
9
 
if(time()-$_SESSION['dernier_acces']>x) 
{
  session_destroy(); 
}
else
{
$_SESSION['dernier_acces'] = time();
}
non ?
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 19h35   #6
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398



Une question paranormale :
1) J'affiche une page.
2) J'attend 11 secondes (temps de déconnexion fixée à 10 pour le test).
3) J'affiche une nouvelle page : toujours connecté.
4) J'affiche encore une nouvelle page : cette fois je suis déconnecté.

Pourquoi le message de déconnexion n'apparait-il pas dès l'étape 3 ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 19h38   #7
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
renforce session_destroy par session_unset() et autres chose si y'en a
__________________
Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 19h40   #8
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Parce que session_destroy() ne détruit pas elle-même toutes les variables de session ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 19h52   #9
Membre émérite
 
Inscription : juillet 2005
Messages : 775
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juillet 2005
Messages : 775
Points : 858
Points : 858
Envoyer un message via AIM à ouatmad Envoyer un message via MSN à ouatmad Envoyer un message via Yahoo à ouatmad
Citation:
Envoyé par psychoBob
Parce que session_destroy() ne détruit pas elle-même toutes les variables de session ?
Citation:
session_destroy()
Si l'on peut créer une session, il faut pouvoir la détruire. c'est simple avec cette fonction , il suffit de l'appeler et la session en cours sera supprimée.
Il faut tout de même remarquer que les variables globales apportées par cette session avant sa destruction ne sont pas
supprimées. Pour cela, il faut utiliser la fonction session_unset() .
__________________
Les hommes naissent et demeurent libres et egaux en dignité et en droit. Les distinctions sociales ne peuvent etre fondées que sur l'utilité commune. Article 1 droits et de l'homme et du citoyen. 1789
ouatmad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 19h55   #10
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Ok, merci Ouatmad

Donc je fais simplement

Code :
1
2
3
4
5
6
 
if(time()-$_SESSION['dernier_acces']>10) 
{
  session_destroy(); 
  session_unset();
}
Pas besoin pour chaque variable de session de faire session_unset(variable1) ?
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h16.


 
 
 
 
Partenaires

Hébergement Web