par
sadeq » 10 juin 2008, 15:59
Bonjour,
En fait notre ami souhaite réinitialiser la durée de vie de la session à chaque consultation de page si la durée de la dernière consultation n'a pas dépassé 24 mn.
Ce qui sous-entend que la gestion de la durée de vie ici doit être personnalisée. Je suggère alors une solution PHP de gestion perso de session.
Voici l'idée:
- On paramètre la session pour une navigation illimitée (par défaut : fin de navigateur)
On active la session pour toutes les pages surveillées.
La première fois, on note le temps d'accès à la 1° page dans une variable globale de la session.
Lorsque l'utilisateur navigue d'une page en ouvrant une autre, on calcule la durée de consultation de la dernière page en utilisant le dernier temps d'accès enregistré. Et si la durée (24 mn) est dépassée, la session doit être détruite sinon, la session reste intacte et le temps d'accès est réinitialisé dans la session.
On répété ce mécanisme pour toutes les pages de session.
Voici ce que ça donne en PHP : un bloc de code à insérer au début de toutes les pages de session.
<?php
/*******************************************************************************************************
* DEBUT DE TRAITEMENT DE LA DUREE DE VIE DE LA SESSION
* ******************************************************************************************************
* Objectif : Personnaliser la gestion de la durée de vie d'une session de la façon suivante :
* 1. Le temps de consultation d'une page est limité à N secondes bien définies
* 2. Quand la règle n°1 est respectée, la session doit être conservée durant toute la navigation
* Sinon, la session est détruite.
*
* Paramètres :
* DUREE_AUTORISEE_ENTRE_2_PAGES : (constante) représente la durée autorisée par la règle n°1
* DERNIER_ACCES : (variable globale de session) représente dans la page actuel, le temps où une page
* précédente a été accédée. Ce paramètre permet de calculer le temps écoulée entre 2 pages
* Ainsi, si cette durée calculée est supérieure au paramètre DUREE_AUTORISEE_ENTRE_2_PAGES
* les données de session sont détruites sinon le DERNIER_ACCES est renouvelé au temps actuel
*
***********************************************************************************************************/
//durée de vie de cookies = fin navigateur
ini_set("session.use_cookies", "1");
ini_set("session.cookie_lifetime", "0");
//durée autorisée entre 2 pages
define("DUREE_AUTORISEE_ENTRE_2_PAGES", 1440); //secondes = 24 mn
//activer la session
session_start();
//vérifier la durée de vie de session autorisée (en secondes)
if (isset($_SESSION["DERNIER_ACCES"])
&& (time() - $_SESSION["DERNIER_ACCES"]) > DUREE_AUTORISEE_ENTRE_2_PAGES )
{
//détruire la session si la durée autorisée est dépassée
session_destroy();
exit();
}
else
{
//réinitialiser le temps pour cette page = renouveler la durée de vie
$_SESSION["DERNIER_ACCES"] = time();
}
/*********************************************************************************
* FIN DE TRAITEMENT DE LA DUREE DE VIE DE LA SESSION
* ********************************************************************************/
?>
Bonjour,
En fait notre ami souhaite réinitialiser la durée de vie de la session à chaque consultation de page si la durée de la dernière consultation n'a pas dépassé 24 mn.
Ce qui sous-entend que la gestion de la durée de vie ici doit être personnalisée. Je suggère alors une solution PHP de gestion perso de session.
Voici l'idée:
[list]
On paramètre la session pour une navigation illimitée (par défaut : fin de navigateur)
On active la session pour toutes les pages surveillées.
La première fois, on note le temps d'accès à la 1° page dans une variable globale de la session.
Lorsque l'utilisateur navigue d'une page en ouvrant une autre, on calcule la durée de consultation de la dernière page en utilisant le dernier temps d'accès enregistré. Et si la durée (24 mn) est dépassée, la session doit être détruite sinon, la session reste intacte et le temps d'accès est réinitialisé dans la session.
On répété ce mécanisme pour toutes les pages de session.
[/list]
Voici ce que ça donne en PHP : un bloc de code à insérer au début de toutes les pages de session.
[php]<?php
/*******************************************************************************************************
* DEBUT DE TRAITEMENT DE LA DUREE DE VIE DE LA SESSION
* ******************************************************************************************************
* Objectif : Personnaliser la gestion de la durée de vie d'une session de la façon suivante :
* 1. Le temps de consultation d'une page est limité à N secondes bien définies
* 2. Quand la règle n°1 est respectée, la session doit être conservée durant toute la navigation
* Sinon, la session est détruite.
*
* Paramètres :
* DUREE_AUTORISEE_ENTRE_2_PAGES : (constante) représente la durée autorisée par la règle n°1
* DERNIER_ACCES : (variable globale de session) représente dans la page actuel, le temps où une page
* précédente a été accédée. Ce paramètre permet de calculer le temps écoulée entre 2 pages
* Ainsi, si cette durée calculée est supérieure au paramètre DUREE_AUTORISEE_ENTRE_2_PAGES
* les données de session sont détruites sinon le DERNIER_ACCES est renouvelé au temps actuel
*
***********************************************************************************************************/
//durée de vie de cookies = fin navigateur
ini_set("session.use_cookies", "1");
ini_set("session.cookie_lifetime", "0");
//durée autorisée entre 2 pages
define("DUREE_AUTORISEE_ENTRE_2_PAGES", 1440); //secondes = 24 mn
//activer la session
session_start();
//vérifier la durée de vie de session autorisée (en secondes)
if (isset($_SESSION["DERNIER_ACCES"])
&& (time() - $_SESSION["DERNIER_ACCES"]) > DUREE_AUTORISEE_ENTRE_2_PAGES )
{
//détruire la session si la durée autorisée est dépassée
session_destroy();
exit();
}
else
{
//réinitialiser le temps pour cette page = renouveler la durée de vie
$_SESSION["DERNIER_ACCES"] = time();
}
/*********************************************************************************
* FIN DE TRAITEMENT DE LA DUREE DE VIE DE LA SESSION
* ********************************************************************************/
?>
[/php]