2016-02-14 17 views
5

Nel tentativo di gestire sessioni PHP in scadenza con più garbo, ho inserito il seguente nel mio codice PHP:Un popup di avviso JavaScript estende la sessione PHP?

$sessionLifeTimeInSeconds = ini_get ("session.gc_maxlifetime"); 
echo '<script type="text/javascript">' . "\n" . 
    ' setTimeout (function() {' . "\n" . 
    ' alert ("Your login session will expire in 3 minutes.");' . 
    "\n" . 
    ' }, ' . ($sessionLifeTimeInSeconds - 180) * 1000 . ');' . "\n" . 
    '</script>' . "\n\n"; 

Quali opere. Tuttavia, ora noto che dopo aver fatto clic sul pulsante "OK" sull'avviso javascript e senza ulteriori attività di alcun genere, la sessione non scade quando viene raggiunto il timeout (i 24 minuti predefiniti in questo caso).

Se la finestra di popup di avviso estende la sessione? Se è così, può essere evitato e se sì, come?

Sto utilizzando Firefox 44.0 su Ubuntu Linux, se questo è rilevante.

+0

Il popup non dovrebbe estendersi durata della sessione php in alcun modo, ma forse c'è più codice (che dovresti fornirci) in che misura. –

+0

No, non ce n'è. Questa è l'unica modifica al codice PHP. Prima dell'inserimento di questa semplice sessione di snippet di Javascript è scaduto dopo 24 minuti (il valore predefinito di PHP), e ora non lo fanno. Non sono state apportate altre modifiche al codice, né sono state effettuate altre interazioni o richieste client/server. Da qui la domanda, perché non pensavo che ciò dovesse accadere. –

+0

Il popup di avviso è lato client. Nessuna richiesta viene eseguita sul server. Quindi la sessione di php non viene estesa. Devi ricaricare il sito quando vuoi farlo. – Fuzzyma

risposta

0

La finestra popup non estende la sessione perché la sessione è trattenuta dal server per 24 minuti e si estende solo in caso di interazione con il server.

cercare di fare una chiamata server tramite javascript nella funzione javascript per estendere la sessione php, ad esempio, un AJAX chiamata alla radice:

$sessionLifeTimeInSeconds = ini_get ("session.gc_maxlifetime"); 
echo '<script type="text/javascript">' . "\n" . 
    ' setTimeout (function() {' . "\n" . 
    ' alert ("Your login session will expire in 3 minutes.");' . 
    ' xhttp.open("GET", "/", true);' . 
    ' xhttp.send()' . 
    "\n" . 
    ' }, ' . ($sessionLifeTimeInSeconds - 180) * 1000 . ');' . "\n" . 
    '</script>' . "\n\n";