Qu'advient-il du tableau $ _SESSION si une session PHP expire au milieu d'une requête?

StackOverflow https://stackoverflow.com/questions/1002935

  •  05-07-2019
  •  | 
  •  

Question

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

session_start();

if(! isset(

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

session_start();

if(isset(

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

session_start();

if(! isset(

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

<*>

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

<*>

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name']; // will this line throw an error?

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name'])) { $name =

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

session_start();

if(! isset(

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

<*>

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

<*>

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name']; // will this line throw an error?

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name']; } else { echo 'Name is not set'; exit; } // bunch of code here echo 'Name is ', $name;

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name'])) { echo 'Name is not set'; exit; } // imagine there is a bunch of code here and that the session times out while // this code is being executed echo 'Name is ',

Je me suis toujours demandé si, si une session PHP expirait au cours de l'exécution d'un script, le contenu du tableau $ _SESSION sera-t-il disponible jusqu'à la fin de l'exécution du script? Par exemple:

<*>

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>SESSION['name']; // will this line throw an error?

Est-il pratique de copier les variables de session dans l'étendue locale pour que je puisse les lire ultérieurement dans le script sans avoir à vérifier en permanence l'expiration du délai de session? Quelque chose comme:

<*>
Était-ce utile?

La solution

ne vous inquiétez pas pour de telles choses. Rien n'arrivera à la session. Il est initialisé par sessioni_start () et $ _SESSION sera toujours disponible dans votre script.

Autres conseils

La durée de vie de session par défaut de trois heures est réinitialisée à chaque ouverture de la session (voir session_cache_expire ), le traitement d'une demande peut uniquement expirer au milieu d'une demande si le traitement d'une demande prend trois heures. Par défaut, les requêtes PHP expirent après seulement 30 secondes. Il n'y a donc aucun risque d'expiration de session lors d'une requête. De plus, la variable $ _SESSION ne changera pas soudainement au milieu d'une requête. Il est rempli au début de la session et c'est tout.

Les variables sont copiées dans la variable globale $ _SESSION à la demande initiale. Elles ont donc le même effet que de les copier dans une variable locale.

Cependant, par souci de clarté, il est logique de le copier dans une variable locale. Surtout si vous envisagez d'utiliser la variable plusieurs fois. Il peut être difficile de lire du code comportant $ _SESSION ['variable'] dans tous les sens.

Ce que vous deviez comprendre, c’était le fonctionnement des sessions. Un client accédant à un script à l'aide d'un super global $ _SESSION ne connaît que la clé de la session qui lui appartient (stocké dans un cookie / URL). Cela signifie que les données de session n'ont rien à voir avec le client. Si vous avez la clé des données de session que vous souhaitez utiliser, vous pouvez les utiliser. Les anciennes versions de PHP présentaient des failles de sécurité car les sessions étaient stockées dans un endroit facilement accessible (je ne me souviens pas des détails).

En gros, si vous avez l'identifiant de session dans un script PHP, vous avez accès à cette session, sauf si la mémoire de la machine est vidée / le disque dur est corrompu (par exemple, redémarrage de l'ordinateur / défaillance du périphérique).

J'espère que cela vous aidera, sinon allez sur php.net et plongez dans les détails du fonctionnement des sessions.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top