Comment conserver la session CakePHP 1.3 après la fermeture du navigateur?Conserver la session CakePHP après la fermeture du navigateur
Répondre
Vous devez le transformer en un cookie, car les sessions sont automatiquement supprimées lorsque le navigateur est fermé. Voir this.
Le cookie n'est pas détruit lorsque le navigateur est fermé.
Définissez $this->Session->cookieLifeTime = $timeToLive;
, où $timeToLive
est la longueur, en secondes, pendant laquelle vous souhaitez que la session dure. C'est la longueur totale, donc si la fenêtre du navigateur se ferme, elle ne sera pas supprimée, mais notez que c'est pas mesuré à partir du moment où le navigateur a fermé.
Où est-ce documenté? – sholsinger
@sholsinger - cliquez sur l'exemple de ligne de code dans ma réponse. – Iiridayn
Je dois dire que c'est probablement le plus facile à implémenter. Les accessoires, Michael. Cela ne signifie pas que je pense qu'un lien vers la source est "documentation". Le fait est que les docs de CakePHP ne listent pas les propriétés publiques pour la classe de session et c'est malheureux. – sholsinger
Semble qu'il existe des moyens d'augmenter la durée de vie de la session via une valeur de configuration remplacée. (Au niveau PHP - via CakePHP Manual). En utilisant le code ci-dessous, vous pouvez changer 0 au nombre de secondes que vous souhaitez pour la session pour vivre.
// Cookie is now destroyed when browser is closed, doesn't
// persist for days as it does by default for security
// low and medium
ini_set('session.cookie_lifetime', 0);
Exemple 2 semaines:
ini_set('session.cookie_lifetime', 60 * 60 * 24 * 14);
L'extrait de code ci-dessus serait écrit dans un fichier de configuration que vous créez dans app/config
. Pour obtenir CakePHP lire ce fichier lors de l'initialisation ajouter ce qui suit à app/config/core.php
Configure::write('Session.save','my_session');
Où my_session
est le nom de votre fichier de configuration.
Voir ce http://www.captain.at/howto-php-sessions.php. Les sessions sont détruites une fois le navigateur fermé, quelle que soit la durée d'expiration. Cela le rend différent des cookies. Corrigez-moi si j'ai encore tort, et citez votre source. – Skaty
Oui, ce que Skaty dit est la voie à suivre. Vous devez convertir les données de session en données de cookie. – Ashok
Techniquement, c'est déjà un cookie. Il est simplement ignoré lorsque la fenêtre du navigateur est fermée car la durée de vie du cookie est de 0 seconde. – sholsinger