scusate ho un problema con le sessioni. ho creato un file php che mi importa funzioni php e js e mi gestisce il login ma quando faccio session_destroy() e premo indietro nel browser mi da la pagina logata con tutti i permessi dell'utente che aveva fatto logout aiutatemi che non ci dormo da una settimana
NB: molti codici sono ridondanti specialmente quelli che gestiscono cache e sessioni. le ho provate tutte
<?php
header ("cache-control: no-cache, must-revalidate");//non va
header ("pragma: no-cache");
//QUESTO include DEVE essere inserito qui perchè contiene la session_start();
include("funzioni.php");
?>
<html>
<head>
<title>Esame di web programming del 13 luglio 2005</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Cache-Control" content="no-cache">
<meta name="Author" content="Giannone Giovanni Emanuele" />
<script type="text/javascript" language="javascript" src="funzioni.js"></script>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body>
<?php
$log = new GestoreLogin();//classe che gestisce login e logout
if (session_is_registered("livello"))//la sessione è aperta e l'utenet ha fatto qualche cosa
{
if (isset($_POST["logout"]))
{
session_unregister("livello");//elimina la variabile livello
session_destroy();//distrugge la sessione e le variabili di sessione
session_unset();//elimino tutte le variabili registrate
clearstatcache();//elimina la cache
$log=null;
header("Location:index.php");//???cosa devo fare!!
}
else if (isset($_POST["nuovo_livello"]) && isset ($_POST["nuovo_messaggio"]) ) //crea nuovo messaggio
$log->salvaNuovo("messaggi.txt",$_POST["nuovo_livello"],$_POST["nuovo_messaggio"]);
else if (isset($_POST["riga_modificata"]) && isset($_POST["messaggio_modificato"]) && $_SESSION["livello"]==3) //modifica la terza condizione e di "sicurezza"
$log->salvaModifiche("messaggi.txt",$_POST["riga_modificata"], $_POST["messaggio_modificato"]);
}
else if (isset($_POST["login"]) && isset($_POST["password"])) //ho fatto login
$log->controllo_accesso($_POST["login"],$_POST["password"],"login.txt");
unset($_POST);//funziona anche senza questo comando ma per sicurezza preferisco eliminare le variabili di POST
if (session_is_registered("livello"))//ricontrollo se esite la sessione (potrei aver appena fatto logout)
{
$log-> disenga_logOut("index.php");//predispongo il logout: questa funzione scrive HTML
$utente_loggato = new loggato();
$utente_loggato->carica_Messaggi("messaggi.txt",$_SESSION["livello"]);
?>
<div id="contenitore"></div>
<script type="text/javascript" language="javascript">
utente.disegna("contenitore","index.php");
</script>
<?php
}
else//true==SESSIONE CHIUSA prima apertura della pagina o logout effettuato
{
?>
<form id="form"method="POST" action="index.php">
<input type="hidden" id="password" name="password" />
<input type="hidden" id="login" name="login"/>
</form>
<table class="login">
<tr>
<td>Login</td>
<td><input type="text" id="log" onchange="document.getElementById('pass').focus(); "/></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" id="pass" onchange="document.getElementById('but').focus();"/></td>
</tr>
<tr>
<td colspan=2><input type="button" id ="but" value="INVIA" onclick="invia('log','login','pass','password','fo rm');" /></td>
</tr>
</table>
<script type="text/javascript" language="javascript">
document.getElementById('log').focus();
</script>
<?php
}
?>
</body>
</html>