Problema di durata della session PHP

Sto usando PHP5 qui. Ho creato un sistema di accesso che controlla il nome utente e la password rispetto ai record nel database. Voglio usare le sessioni per memorizzare il valore registrato. Ad esempio, quando raggiungo la zona in cui "effettuo l'accesso" all'utente con successo:

if($errors = 0) { $_SESSION['logged'] = "1"; } 

Il problema è che voglio che $_SESSION['logged'] rimanga attivo per diciamo 5 minuti, quindi quando faccio un if($_SESSION['logged'] == "1") dopo questo tempo restituisco false. Inoltre, vorrei cancellare questa session dopo che l'utente ha chiuso il browser. Fondamentalmente, voglio una configuration di session in modo che l'utente possa uscire tranquillamente dalla sua scrivania e quando lui o qualcuno preme l'aggiornamento dopo 10 minuti o rientra dopo che il browser è stato chiuso, la session deve essere già rimossa e l'accesso deve essere limitato.

Qualcuno può aiutare? Grazie.

Usa session_set_cookie_params() per cambiare la durata del cookie di session. Si noti che, per impostazione predefinita, è impostato su 0 che significa che il cookie è impostato fino a quando l'utente non esce dal browser. Puoi farlo nel modo seguente:

 /* Set to 0 if you want the session cookie to be set until the user closes the browser. Use time() + seconds otherwise. */ session_set_cookie_params(0); session_start(); 

Quindi controlla l'ultima volta dell'attività, aggiornata each volta che qualcuno visita una pagina.

 if(($_SESSION['lastActivity'] + 300) < time()) { // timeout, destroy the session. session_destroy(); unset($_SESSION); die('Timeout!'); } else { $_SESSION['lastActivity'] = time(); } 

Invece di impostarlo su uno, perché non si imposta $_SESSION['logged_time'] = time(); e poi controllare l'ora contro il tempo () nella tua applicazione?

Se vuoi veramente scadere l'intera session, le specifiche esatte possono cambiare a seconda del gestore di session, ma per il gestore di session predefinito (e qualsiasi altro gestore di session ben educato) ti consigliamo di controllare http: // us3 .php.net / manuale / it / session.configuration.php

Puoi modificare l'impostazione di configuration session.cookie_lifetime , ad es. In php.ini o in un file .htaccess:

session.cookie_lifetime specifica la durata del cookie in secondi che viene inviata al browser. Il valore 0 significa "fino a quando il browser non viene chiuso". Il valore predefinito è 0.

Ciò significa (penso) che non è ansible avere una scadenza sia in base a un timeout e scadenza quando il browser è chiuso. Quindi forse la soluzione migliore è mantenere il default e impostare il proprio timer in $_SESSION come altri hanno suggerito, rendendo così questa risposta inutile.

Le sessioni rimangono attive finché l'utente rimane sul tuo sito. Dovrai utilizzare i cookie per impostare un timeout specifico.