Page 1 sur 1

modification de la durée de vie d'une session

Posté : 05 sept. 2007, 16:52
par Zurg
Bonjour,

je voudrais savoir s'il est possible de modifier la durée de vie d'une session via php ?

J'ai bien vu qu'on pouvait le modifier directement dans le php.ini, mais il y a d'autres applications qui tournent sur mon serveur, et qui nécessitent une durée de vie illimitée. (enfin, jusqu'à la fermeture du navigateur quoi...)

Merci d'avance !

Posté : 05 sept. 2007, 20:52
par Sékiltoyai
Tu peux modifier la configuration à la volée par ini_set(), les modifications ne seront effectives que pour ton script.

Posté : 06 sept. 2007, 08:45
par Zurg
Salut,

merci pour ta réponse, exactement ce qu'il me fallait !

Donc, si j'ai bien compris, c'est la directive session.cookie_lifetime qui m'intéresse non ?

Si oui, ma synthaxe est-elle correcte ?
<?php
ini_set('session.cookie_lifetime=7200');
?>
<edit> Ah oui, une autre question aussi, à quel endroit placer ce petit bout de code ? </edit>

Merki !

Posté : 06 sept. 2007, 12:43
par Sékiltoyai
Non, la syntaxe n'est pas correcte, lis la doc de ini_set().
Tu dois changer la configuration avant de démarrer ta session avec session_start().

Posté : 06 sept. 2007, 13:00
par fab
Faut aussi savoir que suivant ou est hébergé ton site tu n'auras pas la possibilité de changer cette valeur.

Posté : 06 sept. 2007, 20:01
par AB
Faut aussi savoir que suivant ou est hébergé ton site tu n'auras pas la possibilité de changer cette valeur.
C'est vrai mais de moins en moins. Je viens d'avoir l'heureuse surprise la semaine dernière avec online.net, un de mes hébergeurs mutualisé pourtant très minimaliste niveau config. Ils viennent juste d'autoriser le ini_set(). Pas trop tôt, car pour les autres sites j'avais pris entre temps un autre hébergeur qui était plus souple niveau config.

Mainenant pour les hébergements gratuits, ça risque d'être niet encore pour longtemps.

Posté : 07 sept. 2007, 09:21
par Zurg
Salut,

merci pour vos réponses !

-> fab
Faut aussi savoir que suivant ou est hébergé ton site tu n'auras pas la possibilité de changer cette valeur
En fait, c'est pour une appli en intranet, je m'autohéberge !

->Sékiltoyai
Non, la syntaxe n'est pas correcte, lis la doc de ini_set().
Tu dois changer la configuration avant de démarrer ta session avec session_start().
Vi, tu as raison, c'est ce que j'ai fait entre temps, par contre je l'ai placé après le session_start() sans faire gaffe et ça marche quand même... est-ce la configuration de WAMP qui le permet ? Ou cela marchera quand même ?

Voici mon code, pour info :
session_start();

ini_set('session.gc_maxlifetime', 7200); // initialisation de la durée de vie de la session

// temporisation de la session

if (!isset($_SESSION['debut']))
    $_SESSION['debut'] = time();
else { // si la session est expirée, redirection vers la page de login
    if (time() - $_SESSION['debut'] > ini_get('session.gc_maxlifetime')) {
        session_destroy();
		echo "Votre session a expiré, vous allez être redirigé(e) vers la page de connexion dans 3 secondes";
		echo "<meta http-equiv=\"Refresh\" content=\"3;URL=login.php\">";
		exit;
	}
}

Posté : 07 sept. 2007, 12:46
par Sékiltoyai
Vi, tu as raison, c'est ce que j'ai fait entre temps, par contre je l'ai placé après le session_start() sans faire gaffe et ça marche quand même... est-ce la configuration de WAMP qui le permet ? Ou cela marchera quand même ?
Non, ce n'est pas une configuration spécifique. Si tu dis que cela marche tant mieux, mais vérifie tout de même dans ton navigateur la date de validité des cookies que tu crées.

Posté : 07 sept. 2007, 15:33
par Zurg
OK, merci, je le mettrai quand même avant le session_start();

Bon week-end @ tous !