Olá,
Estou fazendo um sistema bem básico de login em php usando mysql.
Estou usando as sessões de php para poder garantir que o usuário está logado.
O problema está que não estou conseguindo fazer o usuário deslogar, encerrando ou terminando a sessão, ela fica aberta por tempo indeterminado (ou tem um timeout default no PHP5.2 ?), e eu quero colocar a opção de logout, já que fiz um if para checar pelo $_SESSION.
Bom, para facilitar, estou usando os seguintes códigos :
//Para criar a sessão (depois de validado o user/pass)
session_start();
$_SESSION['sessao'] = "logado";
header("location:login_success.php"); //redirecionada para a página com as informações somente para usuários logados.
//Para verificar a sessão
session_start();
if(!$_SESSION['sessao']=="logado"){
header("location:main_login.php"); //volta para a tela de login
}
//página para usuarios logados.
//Para terminar a sessão
session_start();
session_destroy();
unset($_SESSION['sessao']);
unset($sessao);
O problema ocorre que mesmo executando o comando de logout, se eu abrir o login_success.php, ele considera como logado. Se eu der um
print_r($_SESSION);
o resultado é
Array
(
[user] =>
[pass] =>
[sessao] => logado
)
Ou seja, ele está criando a sessão com o nome de "logado" , não ?
Tanto que ele não volta para o main_login.php
apenas se eu deletar o cache e as sessões autenticadas do Firefox.
Alguma idéia de como fazer este controle ?
A documentação do
php.net indica utilizar o unset na variavel usada para criar a sessão.
Grato, e perdão pelo e-mail longo, tentei condensar o máximo de informações relevantes.
Juliano