PDA

View Full Version : [PHP] Qualche domanda sulle sessioni


Player1
27-10-2007, 18:20
Ciao! Sono ancora alle prime armi con il php ed ho qualche dubbio sul funzionamento delle sessioni, spero che qualcuno di voi possa aiutarmi.

Sto realizzando la classica funzione di login per un sito, utilizzando le sessioni e passando l'ID di sessione per mezzo dell'url senza settare cookie sui browser client.
Ho il seguente dubbio: se un utente effettua il login poi chiude il browser senza effettuare logout quando si connette di nuovo e fa il login apre una nuova sessione e così via, in questo modo per un singolo utente vengono create diverse sessioni che ovviamente consumano risorse. Come faccio ad evitare che ciò avvenga? Una mia idea è quella di memorizzare lo username come variabile di sessione ed ogni volta che l'untente effettua il login verificare che non esista già una sessione che ha nella variabile username lo stesso nome utente, è possibile fare ciò? Se si è conveniente? Di solito come si ovvia a questo problema?

Altra domanda, questa però è più semplice: come faccio a settare un tempo di inattività trascorso il quale la sessione viene eliminata?
Il contatore del tempo viene riavviato ogni volta che si accede a qualsiasi variabile di una data sessione o ad ogni richiesta di una pagina devo inserire il comando di riavvio del contatore?

Grazie in anticipo per le risposte.Ciao!

anonimizzato
27-10-2007, 19:06
Ho il seguente dubbio: se un utente effettua il login poi chiude il browser senza effettuare logout quando si connette di nuovo e fa il login apre una nuova sessione e così via, in questo modo per un singolo utente vengono create diverse sessioni che ovviamente consumano risorse. Come faccio ad evitare che ciò avvenga?

Le sessioni terminano e vengono cancellate automaticamente quando l'utente chiude il browser.


Altra domanda, questa però è più semplice: come faccio a settare un tempo di inattività trascorso il quale la sessione viene eliminata?

Non vorrei sbagliarmi ma penso che si possa regolare la durata della sessione dal file php.ini

Player1
27-10-2007, 20:10
Le sessioni terminano e vengono cancellate automaticamente quando l'utente chiude il browser.

Sei sicuro? Come fa il server a sapere che l'utente ha chiuso il browser?
NB Non utilizzo i cookie per tener traccia delle sessioni..

Non vorrei sbagliarmi ma penso che si possa regolare la durata della sessione dal file php.ini
Ok ora controllo.. se riuscissi a ricordare anche il nome del parametro da modificare mi faresti un favore..

Grazie!

Player1
01-11-2007, 11:44
Uppettino!
Per favore qualcuno mi aiuti, in fondo si tratta di una comunissima operazione di login!!!

anonimizzato
01-11-2007, 18:44
Non sono un esperto di PHP ma penso che chiudendo il browser si perda l'ID di sessione che, senza cookies, viene passato di pagina in pagina in modo trasparente all'utente.

Comunque tu avevi posto 2 domande: una relativa alla gestione delle risorse ed una relativa al timeout della sessione.

Alla prima secondo me non ti devi preoccupare in quanto è il server a gestire in toto la cosa. E comunque, ripeto, le sessioni sono univoche a prescindere da come vengono gestite, altrimenti cadrebbe la loro utilità e logica.

Alla seconda invece, come ti ho già detto, dovrebbe esistere un'impostazione nel php.ini che ti permette di regolare il timeout della sessione a piacimento.

Ciao.

Xalexalex
03-11-2007, 10:01
Tutto giusterrimo quello che ha detto Sgurbat, aggiungo anche che, se non avessi possibilità di accedere a php.ini, puoi aggiugnere all'inizio di ogni pagina
<?php
ini_set("session.gc_maxlifetime", "DURATA_MAX_SESSIONE_IN_SECONDI");
?>
Occhio che però non funziona se c'è la safe mode è attivata.
Ciaoz :D