mrkalvin 0 Denunciar post Postado Junho 16, 2006 Está acontecendo o seguinte: Se o login estiver correto direciona o usuário para a página privada. Na página privada o usuário efetua o logout (as variáveis de sessão são destruídas), e então é direcionado novamente para a página de login. Na página de login se o usuário, neste momento, clicar no botão voltar do navegador ele retorna para a página privada e continua como se estivesse logado isso é notado pois o nome de usuário (que está numa variável de sessão que foi destruída) continua setado. Porém se tentar acessar a página privada pela URL o browser vai entender que o usuário não está logado pois as variáveis de sessão foram destruídas, e vai direcionar o usuário para a página de login. Por que está acontecendo esse erro, e como impedir que ao clicar no botão voltar o usuário continue logado, se a sessão já foi destruída? Aqui vai o código apenas com o que é necessário para o Login e Logout: Página login.php <?session_start();function htm(){ echo"<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" /> <title>teste</title></head><body><form name=\"Login\" method=\"post\" action=\"login.php\"> Nome de usuário: <input type=\"text\" name=\"username\" value=\"nome\" size=\"6\" maxlength=\"6\" readonly=\"true\" /><br /> Senha de usuário: <input type=\"text\" name=\"password\" value=\"senha\" size=\"6\" maxlength=\"6\" readonly=\"true\" /><br /> <input type=\"submit\" name=\"submit\" value=\"Entrar\" /> </form></body></html>";}if ($_SERVER['REQUEST_METHOD'] == "POST"){ if($_POST['username'] != "nome" || $_POST['password'] != "senha"){ echo "não pode logar<br >"; htm(); }else{ $_SESSION['username'] = $_POST['username']; $_SESSION['password'] = $_POST['password']; unset($_POST['username']); unset($_POST['password']); header("Location: private.php"); exit; }}else{ htm();}?>Página logged.php <?session_start();if(!isset($_SESSION['username']) || !isset($_SESSION['password'])){ header("Location: login.php"); exit;}else{ if($_SESSION['username'] != "nome" || $_SESSION['password'] != "senha"){ header("Location: login.php"); exit; }}?>Página private.php <?session_start();require "logged.php";echo "<h2>Privado</h2><br />";echo "<a href=\"logout.php\">logout</a><br /><br />";echo "Você está logado como: <b>" .$_SESSION['username']. "</b><br />";?>Página logout.php <?session_start();if(!isset($_SESSION['username']) || !isset($_SESSION['password'])){ header("Location: login.php"); exit;}else{ session_unset(); if(session_destroy()){ header("Location: login.php"); }else{ echo "<b>Ocorreu um erro ao destruir a sessão.</b><br />"; }}?> Compartilhar este post Link para o post Compartilhar em outros sites
Leandro - xd 0 Denunciar post Postado Junho 16, 2006 A página fica no cache amigo...! Você pode acessar a página de novo, mas clicar em um link sem estar logado não.[]'s Compartilhar este post Link para o post Compartilhar em outros sites
mrkalvin 0 Denunciar post Postado Junho 16, 2006 E tem como impedir que a página fique armazenada no cache? Compartilhar este post Link para o post Compartilhar em outros sites