Sto testando il mio CMS.
E' normale che quando faccio il logout dalla sessione utente venga eliminata anche la sessione amministratore ? Premetto che il browser è lo stesso.
Sto testando il mio CMS.
E' normale che quando faccio il logout dalla sessione utente venga eliminata anche la sessione amministratore ? Premetto che il browser è lo stesso.
un buon cms deve far differenza tra utente e amministratore e non utilizzare le stesse sessione...
era solo una premessa...
cmq usa unset(tuasessione);
es.
unset($_SESSION['utente']);
così elimini solo quella determinata sessione e nn tutte erchè session_destroy() elimina tutte le sessioni del sito corrente
![]()
ma il login crea sessioni differenti,(sessione utente e sessione admin etc...) con diversi livelli di gestione, però volevo sapere se il session_destroy elimina indifferentemente qualunque sessione aperta sullo stesso browser oppure se esiste un modo per eliminare solo una particolare sessione.
Quindi utilizzando unset($_SESSION.... ottengo i medesimi risultati ?
session_destroy elimina la sessione avviata da session_start(). Se vengono utilizzati due session_name() (es. uno per l'admin ed uno per l'user), devi avviare le due sessioni e distruggerle entrambe.
unset($_SESSION ...) NON distrugge la sessione, semplicemente unsetta (elimina) un indice dell'array $_SESSION.
Comunque sei sicuro che vengano usate due sessioni diverse e non, più semplicemente, due variabili di sessione differenti?
io uso semplicemente così:
in pratica dico se non esiste questa sessione mettimi delle sessioni standard che così nessuno possa vedere...Codice PHP:
if ($_SESSION['public_vars']['user']==""){
$_SESSION['public_vars']['user']="guest";
$_SESSION['public_vars']['nome']="guest";
$_SESSION['public_vars']['cognome']="guest";
$_SESSION['public_vars']['id_utente']=0;
$_SESSION['public_vars']['email']="guest";
}
Se faccio il login assegno a quelle sessioni i rispettivi valori pescati dal db...
logicamente se faccio il logout assegno le variabili standard
cmq tipo l'esempio mio se sn loggato e faccio anche unset($_SESSION['public_vars']) quelle mi elimina tutte le sessioni che sn cn quel nome e anche i rispettivi indici
nn so se ho reso l'idea
cioé se io faccio
session_name("User")
session_start()
poi da un'altra finestra sempre del browser faccio
session_name("Admin")
session_start()
Mi ritrovo con 2 sessioni differenti, poi se faccio un session_destroy, questo quale sessione mi andrà ad eliminare, se non posso io specificare quale ?
Sto vaneggiando ?
se io loggo come Utente con Firefox e come Admin con Safari, non esistono problemi, i logout sono ben distinti. Il problema invece è quando faccio entrambi i login dallo stesso browser, se faccio logout da una, esco in automatico anche dall' altra. Quindi chiedevo se era un comportamento normale oppure ho qualche bug nel mio codice da correggere/migliorare.
Ora farò altri tentativi per vedere se è possibile isolare ogni sessione aperta in ciascun TAB di firefox.....
Che significa "se non posso io specificare quale"?
La sessione che verrà eliminata sarà quella che hai avviato con session_start() e, eventualmente, "selezionato" con session_name();
ok, quindi torniamo al punto iniziale.Originariamente inviato da filippo.toso
Che significa "se non posso io specificare quale"?
La sessione che verrà eliminata sarà quella che hai avviato con session_start() e, eventualmente, "selezionato" con session_name();
Io ho fatto il login Utente (sessione Utente) in una tab di Firefox ed il login Admin (sessioni Admin) in un'altra tab sempre di firefox. Quando faccio il logout da session Utente che richiama session_destroy in automatico mi distrugge anche l' Admin. Comunque non capiterà mai che l'Admin sia anche l'Utente. Ma volevo conferma che questa cosa fosse normale quando si fanno accessi con lo stesso browser.
Se non è così, allora mi sfugge qualche passaggio
IMHO la scelta di utilizzare due sessioni diverse è errata. Se poi hai bisogno di un'altro ruolo (es. moderatore) che fai, crei un'altra sessione ancora?