Cosa succede all'array $ _SESSION se una sessione PHP scade nel mezzo di una richiesta?

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

  •  05-07-2019
  •  | 
  •  

Domanda

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

session_start();

if(! isset(

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

session_start();

if(isset(

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

session_start();

if(! isset(

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

<*>

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

<*>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 ',

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

<*>

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

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

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

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

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

session_start();

if(! isset(

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

<*>

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

<*>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 ',

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

<*>

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

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

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

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

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

<*>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 ',

Mi sono sempre chiesto, se una sessione PHP scade durante l'esecuzione di uno script, il contenuto dell'array $ _SESSION sarà ancora disponibile fino al termine dell'esecuzione dello script? Ad esempio:

<*>

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

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

È pratico copiare le variabili di sessione nell'ambito locale in modo da poterle leggere più avanti nello script senza dover continuare a controllare per un timeout della sessione? Qualcosa del tipo:

<*>
È stato utile?

Soluzione

non preoccuparti di queste cose. Non accadrà nulla alla sessione. È inizializzato da sessioni_start () e $ _SESSION sarà sempre disponibile nel tuo script.

Altri suggerimenti

La durata predefinita della sessione di tre ore viene reimpostata ogni volta che si apre la sessione (vedere session_cache_expire ), quindi l'unico modo in cui una sessione potrebbe scadere nel mezzo di una richiesta è se una richiesta impiega tre ore per l'elaborazione. Per impostazione predefinita, le richieste di PHP scadono dopo soli 30 secondi, quindi non c'è pericolo di scadenza della sessione durante una richiesta. Inoltre, la variabile $ _SESSION non cambierà improvvisamente nel mezzo di una richiesta. È popolato quando inizia la sessione, e il gioco è fatto.

Le variabili vengono copiate nel globale $ _SESSION alla richiesta iniziale, quindi ha lo stesso effetto della copia in una variabile locale.

Tuttavia, per motivi di chiarezza, ha senso copiarlo in una variabile locale. Soprattutto se si prevede di utilizzare la variabile più volte. Può essere difficile leggere il codice che ha $ _SESSION ['variabile'] dappertutto.

Quello che dovevi capire è come funzionano le sessioni. Un client che accede a uno script utilizzando un super globale $ _SESSION conosce solo la chiave della sessione che appartiene a loro (memorizzata in Cookie / URL). Ciò significa che i dati della sessione stessa non hanno nulla a che fare con il client. Se si dispone della chiave per i dati della sessione che si desidera utilizzare, è possibile utilizzarla. Le versioni precedenti di PHP presentavano alcune falle nella sicurezza perché le sessioni venivano archiviate in un luogo facilmente accessibile (non ricordo i dettagli).

Fondamentalmente, se hai l'ID di sessione in uno script PHP hai accesso a quella sessione a meno che la memoria sulla macchina non sia scaricata / l'hard disk sia corrotto (es. Riavvio del computer / Errore del dispositivo).

Spero che questo aiuti, altrimenti vai su php.net e tuffati nei dettagli su come funzionano le sessioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top