34 votes

Qu'est-ce qui maintient une session php en vie?

Ce sont des sessions seulement maintenu en vie chaque fois que vous accédez à une page avec des session_start(); ou faire d'autres pages de le maintenir en vie aussi?

Exemple (avec 30 minutes de délai d'attente):

1

l'utilisateur accède à la page avec la fonction session_start();
25 minutes plus tard, ils ont accès à un autre session_start();
page session reste en vie

2

l'utilisateur accède à la page avec la fonction session_start();
25 minutes plus tard, ils ont accès à un non-session_start(); page
session reste en vie

Est 2 aussi vrai ?

17voto

user2401175 Points 722

Il y a toujours un cookie de session définie dans votre navigateur chaque fois que vous accédez à une page qui a session_start(). Ce cookie de session contient un identifiant de session qui permet au navigateur de maintenir cette session avec le serveur.

Vous pouvez vérifier manuellement par la navigation sur un site web qui a votre session, puis supprimez les cookies de votre navigateur, votre session sera perdu.

Dans votre cas, à la fois 1 et 2 sont correctes.

2 est correcte parce que l'utilisateur a déjà accédé à une page qui a session_start() et votre id de session seront établis pour les 30 prochaines minutes et il en sera de même si vous accesse une page qui n'ont pas de session.

REMARQUE: Mais la page qui vous permettra de visiter si contient session_destroy(), votre session sera détruite.

12voto

Fabien Warniez Points 1574

L'appel de session_start () donne simplement à votre code l'accès à la session.

Ce qui maintient la session active, c'est que votre navigateur envoie l'identifiant de session (stocké dans un cookie) au serveur, que vous l'utilisiez ou non.

Réponse: Ils sont tous les deux vrais.

5voto

Prinzhorn Points 7336

Voici la partie pertinente de la documentation

Lorsqu'un visiteur accède à votre site, PHP va vérifier automatiquement (si la session.auto_start est mis à 1) ou sur demande (explicitement au moyen de la fonction session_start()) si un id de session spécifique a été envoyé avec la demande. Si c'est le cas, le préalable enregistré environnement est recréé.

http://www.php.net/manual/en/intro.session.php

session_start() crée une session ou reprend l'actuel basé sur un identifiant de session transmis via une requête GET ou POST, ou transmises par le biais d'un cookie.

http://www.php.net/manual/en/function.session-start.php

Cela signifie que si vous ne faites pas appel session_start, la session ne sera pas repris et l'expiration d'un délai n'est pas prolongé.

2voto

Ray Paseur Points 1096

En l'espèce, la session PHP durée de vie de 30 minutes est une sorte de "question piège" facteur. La valeur par défaut et presque universelle de la session de vie est de 1440 secondes, soit 24 minutes. Donc, pour la plupart des gens, les données de la session pourrait avoir disparu avant l'25 minutes.

Cet article indique que certains détails derrière la façon dont PHP séances de travail. http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_11909-PHP-Sessions-Simpler-Than-You-May-Think.html

2voto

dlyaza Points 188

La session_start () est un mécanisme interne permettant à php d'accéder à la session et également d'envoyer un cookie de session au navigateur client.

  1. Le cas 1 est vrai: car l'utilisateur a accédé à une page avec session_start (), puis à une autre page similaire.
  2. Le cas 2 n'est vrai que si le délai d'expiration de la session est supérieur à 25 minutes entre deux visites.

Dans le cas 2, le serveur n'enverra aucun cookie de session, c'est un navigateur qui inclut un cookie dans l'en-tête de la demande.

Prograide.com

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.

Powered by:

X