X Magic Troll
devi andare un po' avanti nella lettura di questo thread per capire a cosa servono quelle impostazioni e...già che ci sei dopo, se ne hai voglia, ti consiglio di leggere anche quello che c'è qui sotto
-------------------------------------
Ho riletto l'intero thread e devo rettificare parzialmente quanto detto in un precedente intervento, anche perchè ho fatto un sacco di prove:
1)Se si usano i cookies La sessione rimane valida fino alla scadenza del cookie e quindi alla chiusura della finestra del browser in cui è nata quando il cookie ha lifetime=0, infatti in questo caso la chiusura cancella automaticamente il cookie.
Se apro una nuova finestra darò vita ad una nuova sessione. Quindi se i cookie sono abilitati tutto bene.
E tutto questo era già chiaro, però
2) I files in cui vengono memorizzati i dati di sessione rimangono SEMPRE LEGGIBILI anche se scaduti (hanno superato il session.gc_maxlifetime settato nel php.ini).
I file scaduti hanno la probabilità in percentuale di essere cancellati pari a quella settata (sempre nel php.ini) in session.gc_probability (default = 1).
100 garantirebbe la certezza della verifica della scadenza al momento di OGNI accesso da parte di un utente: quando questi arriva, prima che venga atttivata o rinnovata la "sua" sessione, innesca la cancellazione di tutti i files già scaduti che sono serviti alle sessioni degli altri utenti.
Sicuramente questa cosa sarebbe davvero gravosa per il server che dovrebbe verificare con dei processi piuttosto pesanti (tipo la funzione stat()) la data dell'ultima modifica di tuti i file presenti sino a quel momento. E questo ad ogni accesso.
Quindi la probabilità di pulizia viene mantenuta volutamente bassa, con il solo scopo di evitare l'eccessiva proliferazione di files di sessione.
I RISCHI
Potrebbe accadere che un visitatore abbia navigato rifiutando i cookies e che quindi l'id di sessione venga propagato, per quanto lo riguarda, attraverso i links, mettiamo che gli venga la bella idea di salvare nei preferiti l'indirizzo della pagina (completo di id di sessione)....
dopo un'oretta (o anche giorni) un'altra persona si siede al suo computer e vede questo bel link tra i preferiti, clicca e...si trova nella piena disponibilità della sessione altrui.
Stesso tipo di problemi se si decide di impostare una scadenza molto lunga ai cookies di sessione e qualcuno usa il nostro PC.
Peggio ancora se il furbetto di turno avesse voluto sbirciare di proposito l'id di sessione nel link mentre stavamo navigando.
Immagino che sia sempre per una questione di ottimizzazione delle prestazioni che php non controlla la data del file dal quale sta per prelevare i dati, prima di renderli disponibili.
Insomma le sessioni rimangono valide per giorni se non si prendono provvedimenti.
Il sistema più semplice è quello di memorizzare la data di ingresso di un utente nella pagine coinvolte dal sistema delle sessioni, rinnovare questa data ad ogni successivo accesso, sempre che questo avvenga entro un certo lasso di tempo , altrimenti dichiarare la sessione scaduta e distruggerla (vedere qui come).
L'alternativa potrebbe essere quella di ricorrere a un processo CRON per una verifica periodica della scadenza dei files di sessione, e fargli cancellare quelli da buttare.....