Controllo scadenza sessioni

GoldenDragon

Nuovo Utente
22 Giu 2015
8
0
0
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

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?
 

Akuma

Nuovo Utente
17 Mag 2014
28
0
1
31
Peschiera del Garda (VR)
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

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?

1) Nel db potresti inserire un campo "refresh" che aggiorni ogni tot tempo via ajax, utilizzando javascript puoi far si che la chiamata ajax avvenga solo se l'utente è attivo sulla pagina. Poi ogni tot tempo, sempre via ajax, controlli tutte le sessioni scadute e reindirizzi alla pagina di logout.

2) Senza toccare il db, cerchi di gestire tutto via javascript, se scade il tempo prestabilito reindirizzi al logout.

Scusa per la spiegazione grossolana, ma è giusto per darti un'idea generale.
 

GoldenDragon

Nuovo Utente
22 Giu 2015
8
0
0
Mmh, penso di aver capito. Grazie.
Mi domandavo, però, perchè non esista una funzione is_session_expired(), dato che comunque le sessioni hanno una loro durata indicata nei file .ini

AGGIORNAMENTO
Andando avanti nello sviluppo ho scoperto che se faccio ini_get("session.gc_maxlifetime") ottengo 1440 invece di 60 (come avevo impostato manualmente nel file php.ini). Questo spiega molte cose e penso che potrei tornare al "piano A", cioè mostrare la pagina di logout quando $_SESSION["elemento qualunque"] == null.

PS: sto usando xampp
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
G Controllo scadenza date PHP 6
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
Z Controllo giorni MYSQL PHP 0
M Problema con controllo form in real time jQuery 6
MarcoGrazia jquery validate() controllo checkbox jQuery 2
M Controllo del codice fiscale/partita iva PHP 11
S Software windows10 per controllo contenuti web Windows e Software 6
S Controllo appuntamenti disponibili sul db PHP 5
L input (controllo se è stato modificato o no). PHP 1
W Controllo competitors serp SEO e Posizionamento 2
bubino8 [Javascript] popup di controllo elimina dopo window.print(); Javascript 0
M [MS Access] controllo valido se MS Access 8
MarkRed Come indicare, in una maschera, il primo controllo d'input, tipo "SetFocus" jQuery 9
C [PHP] Controllo <select> comportamento anomalo PHP 2
elpirata [Javascript] Controllo campi required non effettuato Javascript 2
A [PHP] Controllo nome utente form di registrazione PHP 4
L [PHP] controllo dimensione immagine per il resize PHP 2
M [ASP] Upload file da form controllo Classic ASP 5
P [PHP] Controllo al checkbox privacy PHP 6
S [MySQL] Controllo dati di una tabella in tempo reale MySQL 0
T [php] controllo su estensione file PHP 7
M [PHP] Script per controllo disponibilitá negozio in citta PHP 4
I Recupero accesso pannello di controllo dominio Leggi, Normative e Fisco 2
F Controllo dati sui campi di input tramite php PHP 1
R [MS Access] CONDIZIONE CHE CAMBIA PROPRIETA' DI UNA CONTROLLO MS Access 7
M [PHP] Dubbio controllo IF PHP 15
M [PHP] Controllo campo cap con trattino oltre ai numeri PHP 3
Fede72 Controllo registrazioni PHP Mysql PHP 5
L jquery e json controllo valori da determinate chiavi - keys jQuery 0
T [Javascript] un controllo con checkbox che non... controlla... Javascript 3
bubino8 [PHP] Controllo Log e Modifiche Utenti PHP 5
P [PHP] Realizzare un controllo accessi cantiere, problema lettore Qrcode... PHP 0
M [PHP] Controllo inserimento in tempo reale PHP 0
M [PHP] Help: controllo valori inseriti in un campo PHP 1
M [PHP] Impedire di digitare determinati caratteri nell’input (controllo in tempo reale) PHP 4
giancadeejay [PHP] Controllo inserimento tot caratteri PHP 5
giancadeejay [PHP] Controllo su quantita' di caratteri inseriti, in colonna db PHP 5
F [Javascript] Controllo stringa jquery Javascript 4
B [MySQL] CONTROLLO SE CAMPO1 > CAMPO2 MySQL 0
CristianB72 [PHP] Controllo sintassi indirizzo email non funziona PHP 13
M [PHP] controllo inserimento dati un un form PHP 4
ANDREA20 [PHP] Controllo email se e valida PHP 5
elpirata [Javascript] Controllo su campo ricerca data Javascript 1
P scavalca il controllo dello username PHP 1
A problema controllo Javascript 2
C controllo con metodo text non funzionante Javascript 7
P Controllo valori duplicati in un campo a Maschere continue MS Access 0
P controllo browser sul server o in php? PHP 2
P Controllo estensione di un file PHP 1
G ACCESS 2013 controllo TreeView MS Access 0

Discussioni simili