Newsgroup: it.comp.www.php
Titolo: Non capisco [sessioni]

Sarò pedante, ma proprio non capisco...
Ho un sistema che autentica tramite userid e pw, quando mi loggo parte la
sessione che crea il file (credo sia un vero e proprio cookie, no...?)
"filadinumeriacaso". Stampo il nome di questo file tramite "echo $PHPSESSID"
o anche tramite "session_id()", dopodichè vado a leggerne il contenuto e
trovo tutte le mie belle variabili di sessione che ho registrato con
"session_register()" appena dopo il login.
Fino a qui tutto regolare...
Ho impostato anche un pulsante per il logout, che punta ad un file
logout.php all'interno del quale ho scritto:
<?
session_start();
echo "$sessione<br>";
session_destroy();
echo "$sessione<br>";
?>
dove $sessione è così definita:
session_register('sessione');
$sessione=session_id();
Per controllare l'ho fatta stampare prima e dopo il
session_destroy().....Quando faccio il logout voglio che la sessione sia
chiusa, in maniera tale che lo stesso utente non si possa loggare ancora se
è già dentro (muovendosi avanti ed indietro con i tasti dl browser): se
l'utente è già loggato viene evitata l'apertura del db utenti e gli viene
comunicato che è già dentro. Controllando nella cartella temp, all'atto del
logout e quindi dopo session_destroy(), ho notato che il file
"filadinumeriacaso" creato al login viene effettivamente cancellato, ma
questo sembra che non significhi che la sessione non esiste più....Infatti
se dopo questo logout mi loggo di nuovo (stesso user e pw) vengo avvisato
che mi sono già loggato prima, viene ricreato nella cartella Temp lo STESSO
file "filadinumeriacaso" di prima, che però questa volta non contiene le
variabili di sessione perchè la routine mi ha fatto saltare questa fase. Il
controllo è fatto più o meno così:
<?
if (!isset($PHPSESSID)){
session_start();
....fai un po' di roba e loggati...
}else{
....avvisa che sei già loggato....
}
?>
La domanda è: come faccio a fare un controllo sull'esistenza della sessione
(non sull'esistenza del file creato), oppure come faccio a terminare una
sessione e a distruggere il cookie.
Grazie mille, Carlo.

 sessione e a distruggere il cookie.
Se puo' interessarti ho postato un problema molto simile qualche giorno fa e
non ne sono ancora venuto a capo.. Non so neppure io cosa succeda e come mai
la sessione non si distrugga al logout.
G

 ha scritto nel messaggio
news:RwJL9.25119$Ou4.7...@twister2.libero.it...



Se per le sessioni usi i cookie, questo verrà inviato ad ogni accesso
alla pagina dal browser, che non ha la minima idea che tu abbia, su
server, distrutto la sessione: il cookie rimarrà fino a che il browser
non verrà chiuso. Quindi, il php si trova con la richiesta di una
determinata sessione, e, non trovandola, la ricrea. Soluzioni: 
a) invece di controllare che sia settatta la sessione, controlla che
sia settata una specifica variabile di sessione, che puoi benissimo
cancellare su logout;
b) su logout, cancella a mano il cookie sul client, per esempio
inviandone uno con lo stesso nome e con data di scadenza nel passato:
$datiCookie = session_get_cookie_params();
setcookie(session_name(), "" , time()-3600,
$datiCookie['path'],$datiCookie['domain'] );
unset($_COOKIE[session_name()]);
Ciao!
Ivan

 non verrŕ chiuso. Quindi, il php si trova con la richiesta di una


 unset($_COOKIE[session_name()]);
Ho provato tutto ma ancora non riesco a chiudere questa benedetta sessione,
neanche unsettando le variabili singolarmente.
Facendo il paste del link che avevo prima di sloggarmi (con il controllo
sulla variabile di sessione settata) rientro tranquillamente.
Ho provato veramente di tutto ma non c'e' modo! In pratica l'unica maniera
sicura di chiudere una sessione e' chiudere il browser, poco ma sicuro.
G