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

Eléphant du PHP | 148 Messages

05 sept. 2007, 16:52

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 !
Et hop !

ViPHP
ViPHP | 5924 Messages

05 sept. 2007, 20:52

Tu peux modifier la configuration à la volée par ini_set(), les modifications ne seront effectives que pour ton script.

Eléphant du PHP | 148 Messages

06 sept. 2007, 08:45

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 !
Et hop !

ViPHP
ViPHP | 5924 Messages

06 sept. 2007, 12:43

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().

ViPHP
fab
ViPHP | 2657 Messages

06 sept. 2007, 13:00

Faut aussi savoir que suivant ou est hébergé ton site tu n'auras pas la possibilité de changer cette valeur.
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

ViPHP
AB
ViPHP | 5818 Messages

06 sept. 2007, 20:01

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.

Eléphant du PHP | 148 Messages

07 sept. 2007, 09:21

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;
	}
}
Et hop !

ViPHP
ViPHP | 5924 Messages

07 sept. 2007, 12:46

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.

Eléphant du PHP | 148 Messages

07 sept. 2007, 15:33

OK, merci, je le mettrai quand même avant le session_start();

Bon week-end @ tous !
Et hop !