12
votes

Consulteur Extension de la session de l'utilisateur Temps d'expiration

est-il possible d'étendre l'heure d'expiration de la session de l'utilisateur en CI. Ce que je veux faire, c'est, par défaut, le cookie de la session de chaque utilisateur dure par exemple 1 jour, mais chaque fois que l'utilisateur visite le site que son temps d'expiration de la session est prolongé d'une journée de plus.

Je ne sais pas si c'est une bonne idée de faire cela, peut-être que je devrais simplement définir le temps de vie des cookies pour une semaine et c'est tout?


0 commentaires

5 Réponses :


2
votes

Parlez-vous du composant de la session dans CodeDigniter? Vous pouvez aller à config.php et définir $ sess_expiration = 7200; (7200 est la valeur par défaut)

http://codeigniter.com/user_guide/libries/sesstions.html


1 commentaires

La façon dont je comprends $ SESS_Expiration indique simplement la longue session Cookie vit car elle a été créée, 2 heures dans ce cas, ce que je veux réaliser, c'est si l'utilisateur est actif, son cookie de session n'expire théoriquement pas. J'espère que cela rend plus clair ...



5
votes

à partir du Guide de l'utilisateur :

$ sess_expiration : le nombre de secondes que vous souhaitez que la session dure. La valeur par défaut est de 2 heures (7200 secondes). Si vous souhaitez qu'une session non expirante définit la valeur à zéro: 0

Espérons que c'est ce que vous voulez faire?


0 commentaires

12
votes

Je crois ce que vous voulez, c'est en fait le comportement par défaut. Jetez un coup d'oeil à sess_read () et sess_update () dans /system/libraires/session.php

Last_activity pour une session active est mise à jour toutes les cinq minutes.

L'expiration de la session est cochée avec Last_activity + sess_expiration

Ainsi, pour le comportement que vous voulez, définissez votre temps de sess_expiration à 86400 (un jour) et vous devriez être défini.


2 commentaires

Vous devriez vous définir dans le fichier CONFIG.PHP non dans le fichier de bibliothèque. Lorsque vous mettez à niveau le noyau de Coundigniter, vous perdrez les modifications.


Pour le compte rendu, je voulais examiner le fichier système pour voir comment les sessions de CodeDIGNITER sont liées à la question initiale, à ne pas modifier, mais je peux voir comment cela aurait pu être incertain.



1
votes

Le temps de session par défaut dans le codeDigniter est xxx pré>

aussi vous pouvez définir $ sess_expiration = 0; code> Cela signifie que vous définissez une session pour toujours. P> En fait, je pouvais voir dans la session de la bibliothèque de CodeDIGHT.PHP P>

// Set the session length. If the session expiration is
// set to zero we'll set the expiration two years from now.
if ($this->sess_expiration == 0)
{
     $this->sess_expiration = (60*60*24*365*2);
}


0 commentaires

1
votes

Vous pouvez utiliser ceci:

$this->config->set_item('sess_expiration', $sec);
$this->session->sess_destroy();
$this->session = new CI_Session();
// where $sec is the seconds until expiration


0 commentaires