Si j'accède à une page qui appelle session_start()
, combien de temps devrais-je attendre avant d'obtenir un nouvel ID de session lorsque je rafraîchis la page ?
-1, pas une réponse correcte à la question. idée reçue.
Si j'accède à une page qui appelle session_start()
, combien de temps devrais-je attendre avant d'obtenir un nouvel ID de session lorsque je rafraîchis la page ?
Vérifiez php.ini la valeur définie pour session.gc_maxlifetime est la durée de vie de l'ID en secondes.
Je crois que par défaut c'est 1440 secondes (24 minutes)
http://www.php.net/manual/en/session.configuration.php
Modifier: Comme certains commentaires le soulignent, ce qui précède n'est pas entièrement exact. Une merveilleuse explication sur pourquoi, et comment mettre en œuvre les durées de vie des sessions est disponible ici:
Comme l'écrit Brannon, c'est complètement faux et ne devrait pas être la réponse sélectionnée. Cette valeur indique au ramasse-miettes comment se comporter, ce n'est pas une question de durée de vie de votre session. Une session pourrait vivre éternellement si vous n'ajoutiez pas de mécanisme. La clé est de gérer la durée de vie de la session par vous-même (c'est-à-dire supprimer les données de session après une période d'inactivité) et de définir session.gc_maxlifetime sur une valeur supérieure ou égale. kontur a suggéré la meilleure réponse sur ce point, mais veuillez invalider cette réponse, elle pourrait même entraîner des problèmes de sécurité.
La valeur par défaut dans le fichier php.ini pour la directive session.gc_maxlifetime
(le "gc" veut dire garbage collection) est de 1440 secondes ou 24 minutes. Voir la page de configuration de la session dans le manuel :
http://www.php.net/manual/fr/session.configuration.php
Vous pouvez changer cette constante dans les fichiers php.ini ou .httpd.conf si vous avez accès à eux, ou dans le fichier .htaccess local sur votre site web. Pour définir le délai d'expiration à une heure en utilisant la méthode .htaccess, ajoutez cette ligne au fichier .htaccess dans le répertoire racine du site :
php_value session.gc_maxlifetime "3600"
Soyez prudent si vous êtes sur un hébergement partagé ou si vous hébergez plus d'un site où vous n'avez pas modifié la valeur par défaut. L'emplacement par défaut de la session est le répertoire /tmp, et la routine de collecte des déchets s'exécutera toutes les 24 minutes pour ces autres sites (et supprimera vos sessions dans le processus, peu importe combien de temps elles devraient être conservées). Voir la note sur la page du manuel ou ce site pour une meilleure explication.
La solution à ce problème est de déplacer vos sessions vers un autre répertoire en utilisant session.save_path. Cela aide également à empêcher les personnes malveillantes de détourner les sessions de vos visiteurs du répertoire par défaut /tmp.
Selon un utilisateur sur le site de PHP.net, ses efforts pour maintenir la session active ont échoué, il a donc dû trouver une solution de contournement.
Dans le dossier SessionData, des fichiers texte seront stockés pour contenir les informations de session, chaque fichier aura un nom similaire à "sess_a_big_hash_here".
Mais attention, sur la plupart des configurations xampp/ampp/... et certaines distributions linux, c'est 0, ce qui signifie que le fichier ne sera jamais supprimé tant que vous ne le faites pas dans votre script (ou de façon sale via le shell)
PHP.INI:
; Durée en secondes du cookie ou, si 0, jusqu'à ce que le navigateur soit redémarré.
; http://php.net/session.cookie-lifetime
session.cookie_lifetime = 0
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
Regardez aussi pour une réponse plus détaillée : stackoverflow.com/questions/520237/…