Les sessions ne sont-elles conservées que chaque fois que vous accédez à une page avec session_start();
ou est-ce que d'autres pages la conservent également?
Exemple (avec 30 minutes timeout):
l'utilisateur accède à la page avec session_start ();
25 minutes plus tard, ils accèdent à une autre session_start ();
page session reste en vie
l'utilisateur accède à la page avec session_start ();
25 minutes plus tard, ils accèdent à un non-session_start (); page
session reste en vie
Est-ce que 2 est également vrai?
Votre navigateur contient toujours un cookie de session lorsque vous accédez à une page comportant session_start()
. Le nom du cookie sera PHPSESSID
si le site Web utilise PHP (bien que le nom puisse être modifié). Ce cookie de session contient un identifiant de session qui aide le navigateur à maintenir cette session avec le serveur.
Vous pouvez vérifier manuellement en naviguant sur n'importe quel site Web ayant votre session, puis supprimer les cookies de votre navigateur, votre session sera perdue.
Dans votre cas, les 1 et 2 sont corrects.
2 est correct car l'utilisateur a déjà accédé à une page comportant session_start()
et votre identifiant de session sera défini pour les 30 prochaines minutes et sera présent même si vous accédez à une page sans session.
NOTE: Mais la page que vous visiterez si contient session_destroy()
, votre session sera détruite.
L'appel de session_start () donne simplement à votre code un accès à la session.
Ce qui maintient la session en vie, c’est l’envoi par votre navigateur de l’identifiant de session (stocké dans un cookie) au serveur, que vous l’utilisiez ou non.
Réponse: Ils sont vrais tous les deux.
Voici la partie pertinente de la documentation
Lorsqu'un visiteur accède à votre site, PHP vérifie automatiquement (si session.auto_start est défini sur 1) ou sur votre demande (explicitement par session_start ()) si un identifiant de session spécifique a été envoyé avec la demande. Si tel est le cas, l'environnement sauvegardé antérieur est recréé .
http://www.php.net/manual/en/intro.session.php
session_start () crée une session ou reprend la session actuelle en fonction d'un identifiant de session transmis via une requête GET ou POST, ou transmis via un cookie.
http://www.php.net/manual/en/function.session-start.php
Cela signifie que si vous n'appelez pas session_start
, la session ne sera pas reprise et l'expiration ne sera pas prolongée.
Session_start () est un mécanisme interne permettant à php d’accéder à la session et d’envoyer un cookie de session au navigateur client.
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 requête.
Dans le cas présent, la PHP durée de session de 30 minutes est en quelque sorte un facteur "question piège". La durée de la session par défaut et quasi universelle est de 1440 secondes, ou 24 minutes. Donc, pour la plupart des gens, les données de la session auraient pu disparaître avant les 25 minutes.
Cet article explique en détail le fonctionnement de PHP sessions. http://www.experts-exchange.com/Web_Development/Web_Languages-Standards/PHP/A_11909-PHP- Sessions-plus simples que vous-mai-Think.html
Il n’a rien à faire avec les pages Web, les sessions interagissent avec votre navigateur par identifiant de session.
Les identifiants de session générés par PHP sont uniques, aléatoires et presque impossibles à deviner, rendant très difficile l'accès Par un attaquant aux données de la session ou à leur modification. De plus, étant donné que les données de la session sont stockées sur le serveur , Il n’est pas nécessaire de les envoyer avec chaque demande du navigateur.
Pour démarrer une session PHP dans votre script, appelez simplement la fonction session _ Start (). S'il s'agit d'une nouvelle session, cette fonction génère un SID unique pour la session et l'envoie au navigateur sous la forme d'un cookie appelé PHPSESSID (par défaut). Toutefois, si le navigateur a envoyé un PHPSESSID cookie sur le serveur car une session existe déjà, session_start () utilise cette session existante: session_start ();
La 1ère instruction est vraie, sauf si vous utilisez un nom de session différent sur les deux pages.
La 2ème déclaration est fausse.