|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2003
Città: Livorno
Messaggi: 400
|
Sessioni PHP Aggirate
Ciao a tutti...sto lavorando con le sessioni in php e ho bosogno di un chiarimento:
Ho strutturato le mie pagine nel seguente modo: ---------------------------------------------------- 1)MAIN.INC <? include("head.inc"); ?> <table> <tr> <td width=21% height=2%></td> <td width=79% height=2%></td> </tr> <tr> <td> <? include("Menu.inc"); ?> </td> <td> <? print $content ?> </td> </tr> <tr> <td width=21% height=5%></td> <td width=79% height=5%> <? include("..\Generale\FondoPagina.inc"); ?> </td> </tr> </table> </body> </html> ---------------------------------------------------- 2)HEAD.INC <html> <head> <title>Stefano's Pages</title> </head> <body bgcolor=#f2f5f9> ---------------------------------------------------- 3)FONDOPAGIN.INC <b>Ciao a tutti</b> ---------------------------------------------------- 4)PAGINA000.PHP (vi arrivo dalla HOME.PHP) if (isset($_POST['SubmitLoginDitte'])): // il pulsante di submit è quello // della pagina dove immetto password e userid include("..\Generale\VerificaLogin.inc"); //qua c’è la procedura per il controllo login if (!Login($_POST['UserID'],$_POST['Psswd'])): //se il login è errato $_SESSION = array(); session_destroy(); header("Location: $redirezione"); // lo ridireziono alla pagin principale else: $_SESSION['Utente']= $_POST['UserID']; //se il login ècorretto setto la sessione endif; $content = “ <b>BENVENUTO<b> <a href =HOME.PHP?uscita=1>LOGOUT</a> <a href =PAGINA111.PHP>VAI AllA PAGINA DI ADMINISTRATOR<a> ” //content non è altro che una stringa //che verrà stampata nel file main.inc else: //se non arrivo dalla pagina di login c’è stato un errore //e distruggo la sessione $_SESSION = array(); session_destroy(); header("Location: $redirezione"); endif; include("..\Generale\main.inc"); //includo il file main ?> ---------------------------------------------------- 5)PAGINA111.PHP if (isset($_SESSION['Utente'])): //se la sessione è impostata $content = “ <b>BENVENUTO<b><a href =HOME.PHP?uscita=1>LOGOUT</a> -----------ALTRE OPERAZIONI SUL DB------------ ” else: //lo rimando ll pagina di llogin segnalando errore endif; ---------------------------------------------------- Una volta fatto il login correttamente, viene settata la variabile di sessione relativa all’utente. L’utente puo fare il logout o entrare in un’altra pagina (PAGINA111.PHP)…da questa puo fare il logout oppure effetture operazioni sul db. Se faccio il logout dalla pagina PAGINA111.PHP , vengo redirezionato alla HOME.PHP passandogli la variabile Uscita=1 che fa si che venga distrutta la sessione (faccio io le operazioni di distruzione $_SESSION = array(); session_destroy(); )…..se io richiamo direttamente la pagina PAGINA111.PHP senza fare il giro corretto ottengo l’errore e sono rimandato ll pagina di login (come definito nel ramo else) e tutto funziona……il problema ce l’ho quando faccio LOGOUT (distruggo la sessione) e poi premo il tsto BACK di INTERNET_EXPLORER…infatti mi avvisa che la pagina è scaduta, ma mi basta fare REFRESH per ritrovarmi PAGINA111.PHP con l sessione ancora attiva (infatti riesco a leggere il valore inpostto sulla sessione e mi permette di fare tutte le cose che solo dopo essere entrato posso fare)……Come posso risolvere questo problema di refresh del browser? Come mai nonostante distrugga la sessione, il browser la ritrova? Sbaglio qualcosa? Mi scordo di fare qualche operazione? Vi prego, ormai sono settimane che tento di risolverlo senza riuscirci!!! |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Feb 2003
Città: Formia
Messaggi: 1545
|
nella pagina di logout scrivi..
session_unset(); session_destroy(); a me funziona correttamente ![]()
__________________
Il portale delle infomazioni di Latina e Provincia Giralatina.it e’ nato con il preciso intento di promuovere varie attività che si svolgono nella provincia di Latina http://www.giralatina.it Il Blog dei Pendolari http://www.giralatina.it/blog/mybloggie/index.php |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2003
Città: Livorno
Messaggi: 400
|
Ho fatto come dici ma il problema rimane...ho visto che quando accedo come amnistratore mi viene creato un file (il file della sessione) dentro c:\PHP\Sessiondata....facendo il loguot questo file mi viene cancellato...pero se faccio BACK BACK e REFRESH (dal browser), mi viene ripristinato (o ricreato) un file ientico a quello che c'era prima dentro c:\PHP\Sessiondta e in questo modo è come se l'amministratore fosse sempre collegato e quindi chiunque abbia fatto queste operazioni lvora come admin!!!!
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:11.