Imposta il timeout della sessione in PHP

Subodh Poudel 8 luglio 2021
  1. Usa le funzioni session_unset() e session_destroy() per impostare il timeout della sessione in PHP
  2. Usa la funzione unset() per impostare il timeout della sessione in PHP
  3. Usa la funzione session_regenerate_id() per cambiare l’ID della sessione corrente in PHP
Imposta il timeout della sessione in PHP

Questo articolo introdurrà un metodo per distruggere la sessione in PHP utilizzando le funzioni session_unset() e session_destroy(). Distruggeremo la sessione dopo 30 minuti. Controlla l’intervallo di tempo dall’ultima attività all’ora corrente per distruggere la sessione.

Dimostreremo anche un altro modo per impostare il timeout della sessione in PHP utilizzando la funzione unset(). La funzione unset() prende come parametro la variabile di sessione. Questo metodo utilizza un array per memorizzare la variabile di sessione.

Introdurremo un altro metodo per invalidare l’ID di sessione corrente utilizzando la funzione session_regenerate_id(). Questa funzione genera un nuovo ID di sessione per la sessione corrente distruggendo il precedente ID di sessione.

Usa le funzioni session_unset() e session_destroy() per impostare il timeout della sessione in PHP

Possiamo usare la funzione session_unset() per annullare l’impostazione della variabile $_SESSION in fase di esecuzione e utilizzare la funzione session_destroy() per distruggere la sessione dalla memoria. La funzione time() restituisce l’ora corrente. Possiamo usare la variabile $_SESSION per memorizzare il timestamp dell’ultima attività. Pertanto, possiamo controllare l’ora calcolando le differenze dall’ultima attività all’ora corrente. In questo modo, controlliamo l’intervallo di tempo di una sessione.

Ad esempio, avvia la sessione nel server con la funzione session_start(). Controlla se la sessione è stata creata con la funzione isset(). Utilizzare l’operatore && per verificare l’altra condizione all’interno della funzione issset(). Sottrai la variabile di sessione start dalla funzione time() e controlla il risultato se è maggiore di 1800. Usa la session_unset() e session_destroy() all’interno della condizione if. Quindi visualizza il messaggio che dice che la sessione è stata distrutta. Al di fuori della condizione if, creare una variabile di sessione $_SESSION['start'] e assegnarle la funzione time() per aggiornare la sessione.

La condizione if fallisce poiché la variabile di sessione non è stata ancora creata nell’esempio seguente. La sessione verrà creata quando la condizione fallisce. La sessione scade dopo 30 minuti se l’utente non invia la richiesta al server. L’ultima parte della funzione isset() controlla il tempo totale attivo della sessione. 1800 indica 1800 secondi che equivalgono a 30 minuti. Se il tempo attivo totale supera i 30 minuti, la condizione if sarà vera. Quindi, distrugge la sessione. L’output del codice corrisponde alla sessione che viene distrutta dopo più di 30 minuti di tempo attivo. Controlla il Manuale PHP per saperne di più sulla funzione session_unset().

Codice di esempio:

# php 7.*
<?php
session_start();
if (isset($_SESSION['start']) && (time() - $_SESSION['start'] > 1800)) {
    session_unset(); 
    session_destroy(); 
    echo "session destroyed"; 
}
$_SESSION['start'] = time();
?>

Produzione:

session destroyed

Usa la funzione unset() per impostare il timeout della sessione in PHP

Possiamo usare la funzione unset() per distruggere la sessione di una particolare variabile di sessione in PHP. La funzione accetta la variabile $_SESSION come parametro. Questo metodo memorizza la sessione in un array. Possiamo utilizzare l’array associativo per memorizzare il nome della sessione e l’ora di inizio della sessione. Possiamo usare la funzione time() per ottenere l’ora corrente. Possiamo controllare l’intervallo di tempo della sessione seguendo il metodo sopra menzionato, sottraendo il tempo della sessione attiva dall’ora corrente.

Ad esempio, usa la funzione session_start() per avviare la sessione. Scrivere una variabile di sessione $_SESSION['start'] e assegnarle un array associativo. Scrivere le chiavi 0 e registrato e scrivere i valori active e time() per le rispettive chiavi. Controllare se l’intervallo di tempo è maggiore di 30 minuti. Se la condizione è vera, scrivi la funzione unset() con $_SESSION['start'] come parametro. Quindi, visualizzare il messaggio session destroyed. Al di fuori del blocco della condizione if, aggiorna la variabile di sessione $_SESSION['start'] con la funzione time().

Nell’esempio seguente, l’array contiene la variabile di sessione. Il valore della variabile di sessione è active. La funzione time() crea il timestamp corrente nell’array e la chiave registered contiene il valore. Per favore, controlla il Manuale PHP per saperne di più sulla variabile superglobale $_SESSION.

Codice di esempio:

#php 7.x
<?php
session_start();
$_SESSION['start'] = array(0=> 'active', 'registered' => time())
if ((time() - $_SESSION['start']['registered']) > (60 * 30)) {
    unset($_SESSION['start']);
    echo "session destroyed";
}
$_SESSION['start'] = time();
?>

Produzione:

session destroyed

Usa la funzione session_regenerate_id() per cambiare l’ID della sessione corrente in PHP

Possiamo usare la funzione session_regenerate_id() per cambiare l’id di sessione della sessione corrente. In questo modo, possiamo impedire al nostro script di fissare la sessione. Il valore booleano true nella funzione consente la generazione di un nuovo ID di sessione. In questo metodo, possiamo stampare l’id di sessione usando la funzione session_id() prima e dopo la rigenerazione dell’id di sessione. Ma la sessione non scade con la modifica dell’id di sessione. Chiede solo all’utente di accedere nuovamente. Pertanto, impedisce la fissazione della sessione.

Ad esempio, avvia la sessione con la funzione session_id(). Visualizza l’ID della sessione corrente utilizzando la funzione session_id(). Controlla se la sessione è stata creata e crea una sessione $_SESSION['start'] e assegna la funzione time(). Trova l’intervallo di tempo della sessione attiva come abbiamo fatto nel metodo sopra. Se la condizione è vera usa la funzione session_regenerate_id(true). Aggiorna la variabile di sessione. Alla fine dello script, stampa il nuovo ID di sessione con la funzione session_id().

Codice di esempio:

#php 7.x
<?php
session_start();
print("Old: ".session_id());
echo "<br>";
if (!isset($_SESSION['start'])) {
    $_SESSION['start'] = time();
} else if (time() - $_SESSION['start'] > 1800) {
    session_regenerate_id(true); 
    $_SESSION['start'] = time(); 
}
print("Now: ".session_id());
?>

Produzione:

​Old: t38kssej37un38mtsoa6lovh05 
Now: mak7i3in708c6rl2udd8gbfo3r ​ ​
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn