PHP: impostare il timeout per una sessione

,

php-logo

Creando un sistema di autenticazione in Php mi sono accorto che, dopo essermi autenticato tramite username e password, le pagine protette erano accessibili anche dopo ore, senza andare automaticamente in timeout.

Come invertire, quindi, questa tendenza?

Documentandomi sul web ho trovato poche righe di codice che fanno al caso nostro.

// set timeout period in seconds
$inactive = 600;
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
     $session_life = time() - $_SESSION['timeout'];
     if($session_life > $inactive) {
          session_destroy(); header("Location: logout.php");
     }
}
$_SESSION['timeout'] = time();

Devono essere inserite dopo l’inizializzazione della sessione, fatta tramite il comando session_start().

In pratica si imposta il timeout in secondi (in questo caso corrispondente a 10 minuti), si controlla se la sessione timeout è settata e, nel caso lo fosse, si calcola la durata della sessione e la si confronta con il timeout precedentemente impostato.

Nel caso in cui la durata fosse superiore, si rimanda ad un pagina di logout.

Se, al contrario, la sessione di timeout non fosse settata, la si imposta con l’orario corrente, tramite il comando time().

Testato e funzionante 😉

Fonte: daniweb

2 responses to “PHP: impostare il timeout per una sessione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *