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 05/05/2008, 01h35   #1
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
Par défaut définir une durée de vie d'une session

slt svp j ai fait cela pour définir la durée de vie de la session en 1 min:

session_set_cookie_params(60);
session_start();

mais y a rien qui se passe.

je veux préciser la durée de vie de la session svp comment faire ?
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h16   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Mais dans quel but ? Car si tu veux faire ça c'est qu'il doit avoir une finalité à l'affichage ? Si c'est pour faire un simple setTimeOut, je te suggère de prendre exemple sur ceci : Comment déconnecter automatiquement un utilisateur à la fin de sa navigation ? ça peut être intéressant.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h23   #3
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
c'est exactement dans le but de déconnecter un utilisateur qui a fermé son navigateur sans se déconnecter par le bouton de déconnexion
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h32   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Par défaut dès que le client ferme le navigateur toutes sessions est effacé. Mais si tu veux vraiment poussé tu peux tenter diverses choses, comme les cookies cf le lien
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h43   #5
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
mais mon problème c'est que je dois noter l'heure de la déconnexion du membre, donc si le membre n 'as pas cliqué sur déconnexion et si je précise pas une durée de la session, comment je vais prendre l'heure de la déconnexion du membre ?
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h47   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tu gardes en base de données par exemple l'heure de la dernière activité. C'est ainsi que fonctionne par exemple les forums
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h47   #7
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
quand j ai essaier ce qui dans faq php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 <?php
define ('SESSION_TIMEOUT', "1800");
if (isset($_SESSION['login']))
{
    // On vérifie si le temps d'inactivité n'a pas été dépassé
    if(time()-$_SESSION['last_access'] > SESSION_TIMEOUT)
    {
        logout();
    }
    else
    {
        // On stocke l'heure de dernière connexion
        // time s'exprime en secondes à partir du 01/01/70 à 00:00:00
        $_SESSION['last_access'] = time();
    }
}
?>
j'avais un problème c'est que la $_SESSION['last_access'] sera initialiser à quoi ?
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h48   #8
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
et comment ça se fait l'heure de la dernière activité ? prcq je n'ai aucune idée
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h53   #9
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ben justement last_access est la variable de dernière activité.

Après si tu veux garder cette variable pour des stats ou un espace membre il vaut mieux la mettre en BDD
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h53   #10
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
est ce que vous pouvez me dire par quoi je dois l'initialiser exactement ? pour ne pas avoir l'erreur de : Undefined index: last_access
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h57   #11
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tout simplement par
Code :
$_SESSION['last_access'] = time();
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 03h58   #12
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
c'est exactement ce que j'ai essaie de faire mais y a rien qui change je comprens pas pourquoi :
<?php
define ('SESSION_TIMEOUT', "1800");
$_SESSION['last_access'] = time();
if (isset($_SESSION['login']))
{
// On vérifie si le temps d'inactivité n'a pas été dépassé
if(time()-$_SESSION['last_access'] > SESSION_TIMEOUT)
{
logout();
}
else
{
// On stocke l'heure de dernière connexion
// time s'exprime en secondes à partir du 01/01/70 à 00:00:00
$_SESSION['last_access'] = time();
}
}
?>
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 04h01   #13
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tout simplement parce que le fait de mettre tout ça sur la page même page ne changera rien vu que la différence sera toujours inférieur à temps défini. normal dans un sens. Ce qu'il faut faire c'est lors de la connexion initialisé la variable puis faire le test une fois connecté pas autrement.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 04h03   #14
Invité de passage
 
Inscription : avril 2008
Messages : 13
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 13
Points : 0
Points : 0
merci bien je vais essaier de le faire et réecrire par la suite
ledébut est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2008, 08h53   #15
Nouveau Membre du Club
 
Inscription : juin 2005
Messages : 92
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 92
Points : 39
Points : 39
En fait, c'est simple, il suffit juste de tester l'age de la session AVANT de réinitialiser last access, et tu peut le faire sur la même page :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
define ('SESSION_TIMEOUT', "1800");
 
// Si tu fait ça ici, ça ne sert à rien de tester derrière
//$_SESSION['last_access'] = time();
 
if (isset($_SESSION['login'])) {
 
  // On vérifie si le temps d'inactivité n'a pas été dépassé
  if(time()-$_SESSION['last_access'] > SESSION_TIMEOUT) {
 
  logout();
 
  } else {
 
    // On stocke l'heure de dernière connexion
    // time s'exprime en secondes à partir du 01/01/70 à 00:00:00
    // Ici, c'est tres bien et ça devrais suffire
    $_SESSION['last_access'] = time();
  }
 
}
?>
Cepandant, il faut bien penser à set cette variable au moment de la création de la session, quand la personne se connecte.
Assimil 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 00h45.


 
 
 
 
Partenaires

Hébergement Web