Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mrkalvin

Logout de sessão mas,

Recommended Posts

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.