PDA

View Full Version : [PHP] Problema con le sessioni


k3nshin
06-01-2005, 15:05
Faccio una premessa un po' lunga per cercare di spiegare la situazione nel modo migliore possibile

Sto realizzando un sito che permetta agli utenti di effettuare un login, quindi uso le variabili $_SESSION[ ] per mantenere alcuni dati dell'utente prelevati dal db, tra i quali username e tipo di utente (amministratore, utente, ecc...) ... Al momento del login, viene inizializzata la sessione (session_start()) e settati i valori per le variabili di sessione... La pagina a cui si accede dopo il login ha come prima istruzione session_start(), posta prima di qualsiasi output HTML ... Viene visualizzato un messaggio di benvenuto contenente, tra l'altro, il tipo di utente, prelevato dalla variabile di sessione apposita. Il problema è il seguente: effettuando una prima volta il login, navigando e quindi uscendo, non ci sono errori; rientrando nel sito con un altro utente e navigando, capita che il tipo di utente cambi valore e ritorni al valore dell'utente precedente... nel mio codice NON c'è neanche un'istruzione che vada a modificare la variabile in questione, dopo il login... il logout è effettuato nel seguente modo:
...
session_start();
session_unset();
$_SESSION=array();
...

per completezza, aggiungo che il login salva (volendo) un cookie, NON contenente però il tipo di utente...

:mc:

Python
06-01-2005, 19:42
non ho ben capito il tuo problema cmq da quello che mi ricordo (usavo le sessioni nel mio forum in php più di un anno fa)
session_start genera un id alfanumerico mi pare di 16 caratteri, ecco questo lo devi conservare in un cookie così la prox volta che l'utente entra nella pagina, prima leggi il cookie e se c'è un id conservato, allora avvii la sessione con quell'id session_start(idprecedente) così si ristorano quelle variabili

k3nshin
06-01-2005, 22:11
non ho ben capito il tuo problema cmq da quello che mi ricordo (usavo le sessioni nel mio forum in php più di un anno fa)
session_start genera un id alfanumerico mi pare di 16 caratteri, ecco questo lo devi conservare in un cookie così la prox volta che l'utente entra nella pagina, prima leggi il cookie e se c'è un id conservato, allora avvii la sessione con quell'id session_start(idprecedente) così si ristorano quelle variabili

al momento del logout gli faccio cancellare anche il cookie con il PHPSESSID... inoltre osservando meglio ho notato che il valore non è sempre quello dell'utente precedente... :muro:

Python
06-01-2005, 22:25
Originariamente inviato da k3nshin
al momento del logout gli faccio cancellare anche il cookie con il PHPSESSID... inoltre osservando meglio ho notato che il valore non è sempre quello dell'utente precedente... :muro:


continuo a non capirti....

se cancelli il cookie con il riferimento all'id di sessione, la prossima volta che quell'utente ritorna nella pagina avrà una sessione nuova....

se magari ti spieghi meglio anche se cmq io sono un pò arrugginito col php, qualcuno ti saprà aiutare meglio

cionci
07-01-2005, 09:19
Il session ID viene automaticamente inviato tramite Cookie appena viene eseguita session_start...
Il problema è che il cookie inviato è relativo ad una sola sessione del browser...

Conservare il session ID in un cookie e prelevarlo al nuovo login non ha senso...perchè il session ID è garantito essere univoco esclusivamente in una sessione del server web (se viene riavviato il server web i session ID si possono ripetere)...