Imposta il timeout della sessione in PHP

Imposta il timeout della sessione in PHP
L'inattività di un utente registrato è controllata dal timeout della sessione. Quando un utente accedi a un sito Web, una sessione crea per quell'utente e la sessione viene distrutta quando l'utente logout o chiude il browser. Il timeout della sessione viene utilizzato per impostare il limite di tempo per l'inattività dell'utente. Supponiamo che se il limite di timeout della sessione è impostato su 60 secondi e l'utente è inattivo per 60 secondi, la sessione di quell'utente verrà scaduta e l'utente dovrà accedere di nuovo per accedere al sito. Il modo per impostare o aggiornare il timeout della sessione in PHP ha mostrato in questo tutorial.

Gestione della sessione in PHP

IL session_start () La funzione viene utilizzata per creare una nuova sessione per l'utente. Il nome della sessione predefinito è PhpSessid e viene utilizzato per verificare che la sessione esista o no. Se non vengono rilevate informazioni sui cookie o sulla sessione, verrà generata una nuova sessione per l'utente, altrimenti la sessione corrente verrà utilizzata per l'utente.

Impostazione del timeout della sessione

Il limite di timeout della sessione può essere impostato impostando il valore di due direttive in PHP.ini file o utilizzando la funzione ini_set () nello script PHP. Le direttive sono riportate di seguito.

  1. sessione.gc_maxlifetime
  2. Viene utilizzato per impostare il limite di tempo in pochi secondi per archiviare le informazioni sulla sessione nel server a lungo.

  3. sessione.cookie_lifetime
  4. Viene utilizzato per impostare il limite di tempo di scadenza per il cookie PhpSessid.

Imposta il timeout della sessione in PHP

I modi per impostare il valore di timeout della sessione in PHP per la gestione della sessione di un utente sono stati mostrati in questa parte del tutorial utilizzando più esempi.

Esempio-1: imposta il valore di timeout della sessione utilizzando le direttive PHP

Crea un file PHP con il seguente script per conoscere il modo di impostare il timeout della sessione utilizzando le direttive PHP e la gestione delle sessioni in base ai valori della direttiva. IL ini_set () La funzione è stata utilizzata nello script per impostare il valore di sessione.gc_maxlifetime E sessione.cookie_lifetime direttive. La durata della sessione è stata impostata su 2 secondi a scopo di test. La variabile superglobal $ _cookie array è stata utilizzata qui per gestire la sessione. La nuova sessione verrà generata per l'utente quando lo script verrà eseguito nel browser e dopo due secondi la sessione sarà scaduta.

// Imposta il timeout della sessione per 2 secondi
$ timeout = 2;
// Imposta il maxlifetime della sessione
ini_set ("sessione.gc_maxlifetime ", $ timeout);
// Imposta la vita dei cookie della sessione
ini_set ("sessione.cookie_lifetime ", $ timeout);
// Avvia una nuova sessione
session_start ();
// Imposta il nome della sessione predefinita
$ s_name = session_name ();
// Controlla che la sessione esiste o no
if (ISSET ($ _COOKIE [$ s_name]))
setCookie ($ s_name, $ _cookie [$ s_name], time () + $ timeout, '/');
Echo "la sessione è creata per $ s_name.
";

altro
Echo "La sessione è scaduta.
";
?>

Produzione:

Il seguente output apparirà dopo aver eseguito lo script sopra per la prima volta. L'output mostra il nome utente della sessione predefinita, PhpSessid.

Verrà visualizzato il seguente output se la pagina viene aggiornata dopo 2 secondi.

Esempio 2: imposta il valore di timeout della sessione utilizzando $ _Session Array

Crea un file PHP con il seguente script per impostare il valore di timeout della sessione utilizzando la variabile Superglobal PHP, $ _Session. La durata del tempo della sessione è stata impostata su 5 secondi a scopo di test. Successivamente, il tempo di richiesta dell'utente per la pagina è stato archiviato in una variabile denominata $ tempo. Quando la durata del tempo tra il $ tempo La variabile e l'ultima attività dell'utente saranno più di 5 secondi, quindi la sessione corrente dell'utente verrà distrutta e verrà generata una nuova sessione. IL session_unset () E session_destroy () Le funzioni hanno usato nello script per distruggere la sessione.

// Avvia una nuova sessione
session_start ();
// Imposta la durata della sessione per 5 secondi
$ durata = 5;
// Leggi il tempo di richiesta dell'utente
$ time = $ _server ['request_time'];
// Controlla la sessione dell'utente o no
if (ISSET ($ _ session ['last_activity']) &&
($ time - $ _session ['last_activity'])> $ durata)
// Unset le variabili di sessione
session_unset ();
// Distruggi la sessione
session_destroy ();
// Inizia un'altra nuova sessione
session_start ();
echo "viene creata una nuova sessione.
";

altro
Echo "esiste la sessione corrente.
";
// Imposta l'ora dell'ultima attività dell'utente
$ _Session ['last_activity'] = $ time;
?>

Produzione:

Il seguente output apparirà dopo aver eseguito lo script sopra per la prima volta.

Verrà visualizzato il seguente output se la pagina viene aggiornata dopo 5 secondi.

Esempio-3: impostare il valore di timeout della sessione utilizzando la funzione $ _Session e time ()

Crea un file PHP con il seguente script per impostare il valore di timeout di sessione utilizzando la variabile PHP Superglobal, $ _Session, e la funzione PHP integrata, tempo (). La funzione Time () restituisce il valore di timestamp corrente del sistema. La durata della sessione è stata impostata su 600 secondi (10 minuti) nello script.

$ _Session ['start'] è stato utilizzato per archiviare l'orario di inizio della sessione. Quando la durata del tempo tra l'ora corrente e l'ora di inizio della sessione sarà superiore a 10 minuti, la sessione corrente dell'utente verrà distrutta. Le funzioni session_unset () e session_destroy () sono state utilizzate nello script come esempio precedente per distruggere la sessione.

// Avvia una nuova sessione
session_start ();
// Controllare che l'ora di inizio della sessione è impostato o no
Se(!ISSET ($ _ sessione ['start']))

// Imposta l'ora di inizio della sessione
$ _Session ['start'] = time ();

// Controlla che la sessione è scaduta o no
if (ISSET ($ _ session ['start']) && (time () - $ _session ['start']> 600))
// Unset le variabili di sessione
session_unset ();
// Distruggi la sessione
session_destroy ();
Echo "La sessione è scaduta.
";

altro
Echo "esiste la sessione corrente.
";
?>

Produzione:

Il seguente output apparirà dopo aver eseguito lo script sopra per la prima volta. Il messaggio scaduto verrà visualizzato se la pagina viene aggiornata dopo 10 minuti.

Conclusione

In questo tutorial sono stati mostrati tre modi diversi per impostare il valore di timeout della sessione per la gestione di un utente in PHP. Gli utenti PHP riceveranno il concetto di base di implementare la sessione dell'utente utilizzando le variabili $ _Cookie e $ _Session ed essere in grado di applicarlo nel proprio script dopo aver letto questo tutorial.