Newsgroup: it.comp.www.php
Titolo: Sessioni

Salve a tutti.
Ho una pagina di login con i campi classici user e password.Il file php che
verifica l'utenza, in caso di successo memorizza l'user in una variabile di
sessione alla quale faccio riferimento in un'altra pagina.Succede che se dopo
essermi loggato, ad esempio come pippo, torno indietro col tasto di navigazione
dell'explorer e provo a loggarmi come pluto, la pagina successiva mi dice
sempre benvenuto pippo.Immagino che questo succeda perchè continua a essere
aperta la prima sessione che, non sò perchè, non è sovrascrivibile.Dove e come
dovrei chiudere la sessione per poter loggarmi con un'altra utenza senza dover
chiudere il browser?
GRAZIE.
-- 
Posted from  [80.16.165.106] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 ha scritto nel messaggio
news:7168b4c7fdfd10d662f...@mygate.mailgate.org...

assicurati che ci sia un session_start() all'nizio della pagina.
Per fare una pagina di log out creati una semplice pagina php con questo
codice:
<?
session_start();
session_distroy();
?>
Ciao

se vuoi cancellare solo alcune variabili di sessione non usare
session_distroy() ma session_unregister() o session_unset()

 session_distroy() ma session_unregister() o session_unset()
Ho provato a fare in entrambi i modi nella pagina di login ma in tutti e due i
casi mi dà il seguente messaggio
Warning: Trying to destroy uninitialized session in path/index.php


 
Allora, stai attento.
Il trucco consiste nel NON registrare direttamente il valore dalla userID
inserita dall'utente nel form di autenticazione/
Mettiamo che questa sia la tua pagina di login:
<?php
    session_start();
    session_register('userID');
    if(isset($nome))
        {
        $userID = $nome;
        header("Location: s2.php");
        }
?>
<html>
<form action="<? print $PHP_SELF; ?>" method="get">
<input type="text" name="nome"><br>
<input type="submit" value="invia">
</form>
</html>
Registriamo una variabile "userID" e impostiamo il campo di testo per
l'autenticazione chiamandolo "nome". Se l'utente ha inserito il proprio nome
nel form e ha inviato il modulo, il nome viene registrato nella variabile
$userID, dopdichè un'istruzione "header" spedisce l'utente nella seconda
pagina, che è pressappoco così:
<?php
    session_start();
    echo $userID;
?>
Questa pagina stampa la userID dell'utente memorizzata nella sessione
attuale.
Se adesso torni indietro con il bottone "back" del browser e ti logghi con
un nome diverso, la variabile "$userID" verrà sovrascritta con il nuovo nome
passato attraverso il campo "nome" del form (rappresentato dalla variabile
"$nome"), la seconda pagina verrà richiamata e mostrerà correttamente il
nuovo userID.
Se non hai capito qualcosa scrivimi.
Ciao
Roberto

Se intendi usare la pagina di login per autenticare un utente protetto da
password, ricordati di cambiare il "method" del form in "POST", altrimenti
la password viene messa in bella mostra nella finestrina del browser.
ri-ciao
Roberto

 ha scritto nel messaggio
news:7fbdba2b41d1b113d06...@mygate.mailgate.org...


Tutto a posto.
Grazie!!!


 sempre benvenuto pippo.
Per inizializzare la sessione chiudi IExplorer e riavvialo, ripetendo la 
procedura. Vedrai che funzionerà.
 bye

Salve, sul mio sito ospitato da Aruba (cosi' sapete con chi avete a che
fare), quindi su NT alla funzione   session_start() ;
mi da i seguenti warning
Warning: open(/tmp\sess_ff765140b34acf3513678ce9c6b82616, O_RDWR) failed: m
(2) in D:\Inetpub\webs\sitointernet\session.php on line 1
Warning: open(/tmp\sess_ff765140b34acf3513678ce9c6b82616, O_RDWR) failed: m
(2) in Unknown on line 0
Warning: Failed to write session data (files). Please verify that the
current setting of session.save_path is correct (/tmp) in Unknown on line 0
ho constatato con phpinfo() che il percorso in cui vengono salvati i file e'
"/tmp"
session.save_path          /tmp
credete che debba contattarli in quanto hanno configurato male il path?
Ho letto dei mex precedenti, in un 3ad viene consigliato di mettere il file
nella cartella cgi-bin, ma il risultato e' lo stesso
(in locale va tutto ok)
ciao