Pingus
31-03-2004, 11:29
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!!!
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!!!