Buongiorno.
Ho cercato in lungo e in largo sul web, ma non ho ancora capito come si possa controllare se una sessione php è scaduta.
Inizialmente immaginavo che facesse testo il valore session.gc_maxlifetime del php.ini, dunque lo ho settato a 60 secondi e ho provato a fare un login. Ho lasciato la pagina "a riposo" per una decina di minuti (giusto per essere sicuri), poi ho ricaricato la pagina e tutto funzionava ancora...
Quindi ho pensato di inserire un periodo di tempo nel record della sessione nel db, periodo dopo il quale la sessione è considerata scaduta. Quindi con un controllo del tipo
posto all'inizio di ogni pagina controllo se la sessione è ancora attiva o meno e mi regolo di conseguenza. Qui però sorge il problema di continuare ad aumentare il valore in $expire fintanto che l'utente interagisce con la pagina, altrimenti dopo esattamente $expire secondi la sessione scade e l'utente è costretto a riloggarsi.
Cosa mi sfugge? Come posso fare?
Ho cercato in lungo e in largo sul web, ma non ho ancora capito come si possa controllare se una sessione php è scaduta.
Inizialmente immaginavo che facesse testo il valore session.gc_maxlifetime del php.ini, dunque lo ho settato a 60 secondi e ho provato a fare un login. Ho lasciato la pagina "a riposo" per una decina di minuti (giusto per essere sicuri), poi ho ricaricato la pagina e tutto funzionava ancora...
Quindi ho pensato di inserire un periodo di tempo nel record della sessione nel db, periodo dopo il quale la sessione è considerata scaduta. Quindi con un controllo del tipo
PHP:
/*Recupero data di creazione e durata della sessione dal db e le metto in $start e $expire. Ometto per brevità*/
if($start+$expire <= time()) //$start è un timestamp e $expire è espresso in secondi
die( "Sessione scaduta" );
else
/*Vai avanti con il caricamento della pagina*/
posto all'inizio di ogni pagina controllo se la sessione è ancora attiva o meno e mi regolo di conseguenza. Qui però sorge il problema di continuare ad aumentare il valore in $expire fintanto che l'utente interagisce con la pagina, altrimenti dopo esattamente $expire secondi la sessione scade e l'utente è costretto a riloggarsi.
Cosa mi sfugge? Come posso fare?