Ir ao conteúdo
  • Cadastre-se

PHP Sair com PHP, erro na mensagem após quebrar a sessão


Posts recomendados

<?php
//Abrindo a sessão
session_start();

if(!empty($_SESSION['id'])){
//Encerra a Sessão do Usuário
session_destroy();
//Joga ele para a página de login
header("location: ../../../");
//Coloca na sessão uma mensagem
$_SESSION['loginMsg'] = "<div class='alert alert-success' role='alert'>Deslogado com sucesso.</div>";
exit;

}



Eu estou usando esse meu code para retirar meu usuário do login com o session_destroy(); que acredito ser mais preciso do que ficar fazendo unset(); ! Porém entendam a minha dor ao ver que preciso levar uma mensagem dizendo: "você foi desconectado com sucesso" para a nova tela que estou redirecionando com o Header acima.

 

Eu sei que é evidente que eu estou querendo enviar algo na sessão, sendo que acabei de rodar session_destroy(); logo acima.... Mas é só para vcs me ajudarem nessa solução. Estou finalizando meu primeiro sistema de Login rsrsrsr 

 

desde já agradeço

Link para o comentário
Compartilhar em outros sites

Você destruiu a sessão, encerrou tudo...

 

Quando você tenta gravar novamente na sessão ela não existe e deve dar erro de "undefined variable $_SESSION" ou até mesmo "undefined index loginMsg"

 

É melhor se decidir no que fazer ou fazer o header ali tipo...

 

header("location: ../../../?logout=true");

 

E no formulário do login, no caminho ali em cima:

if (!empty($_GET['logout']) && $_GET['logout'] == 'true') {
    echo "<div class='alert alert-success' role='alert'>Deslogado com sucesso.</div>";
}

 

Link para o comentário
Compartilhar em outros sites

@Carlos Zanon

1 minuto atrás, Carlos Zanon disse:

Você destruiu a sessão, encerrou tudo...

 

Quando você tenta gravar novamente na sessão ela não existe e deve dar erro de "undefined variable $_SESSION" ou até mesmo "undefined index loginMsg"

 

É melhor se decidir no que fazer ou fazer o header ali tipo...

 


header("location: ../../../?logout=true");

 

E no formulário do login, no caminho ali em cima:


if (!empty($_GET['logout']) && $_GET['logout'] == 'true') {
    echo "<div class='alert alert-success' role='alert'>Deslogado com sucesso.</div>";
}

 

 

Não acho bacana passar com GET na url dessa forma, tendo em vista que se você manualmente digitar isso na url, você faz a msg aparecer sem necessariamente ter nem logado na conta. Dessa forma acredito que somente com JS resolve meu problema. Mas tem mais alguma dica solução?

Link para o comentário
Compartilhar em outros sites

12 horas atrás, oassinante disse:

Não acho bacana passar com GET na url dessa forma

 

Também não acho bacana, mas cá pra nós, não há a compreensão de que destruiu a sessão e continua declarando variáveis nela, então, não tem como sugerir uma solução mais trabalhada, ainda falta lógica, esta é uma solução simples que atende e resolve.

 

Outras formas de fazer são melhores controles de sessão, sem destruir ela, mas usando os unset em locais pontais para deslogar teu usuário.

 

Exemplo:

 

No login, por exemplo, você define algumas vars:

<?php
session_start();

/** TESTE DE LOGIN BLA BLA BLA **/

$_SESSION['UsuarioID'] = 1;
$_SESSION['Usuario'] = 'Jaozin';
$_SESSION['Logout'] = 0;

 

 

Ai no logout você faz algo como:

<?php
session_start();

unset($_SESSION['UsuarioID'], $_SESSION['Usuario']);
$_SESSION['Logout'] = 1;

header('Location: ../../..');

 

E na sua tela de login, algo como:

<?php
session_start();

if (isset($_SESSION['Logout'])) {
    unset($_SESSION['Logout']);
    echo "<div class='alert alert-success' role='alert'>Deslogado com sucesso.</div>";
}

Eu, acho muito pra pouco 😛

O $_GET no caso pra exibir uma mensagem de logout não altera banco de dados nem nada critico, não vejo motivos pra complicar o programa, mas enfim, é uma segunda solução.

Link para o comentário
Compartilhar em outros sites

  • Moderador

@oassinante

Veja estes dois posts. Vão ajudar você a fazer o que quer. Se seguir as dica que tem nos dois tópicos, vai conseguir desenvolver seu sistema de login, onde todas as páginas restritas, são testadas para ver se há sessão, caso contrário manda de volta para o formulário.

 

 

 

 

 

 

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@oassinante A parte de sair é extremamente simples, basta destruir a sessão.

 

Exemplo:

//Inicia a session
session_start();

    //inclui a conexao
	include 'includes/conexao.php';	

    //pega o id do usuário logado
	$idUsuario = $_SESSION["codusuario"];
	
    //atribui a session em um array vazio
	$_SESSION = array();
	
    //Testa se a sessão foi destruida, se sim, faz um insert em uma tabela de logs
	if(session_destroy()){
		$data = date("Y-m-d");
		$insere = "INSERT INTO logs(idusuario, idAcao, data, hora) VALUES($idUsuario, '2', '$data', curtime())";
		$dados = mysql_query($insere);
	}
	
	//redireciona o usuário para a tela de login 
	header("location: index.php");

Não copie. estude ele. A parte de testar a sessão e inserir uma tabela de logs ali é só um adicional. Não é necessário usa-la, apenas se você quiser ter um controle de quem saiu, quando saiu.... quando logou.. e etc..

 

O que tem ali nos tópicos que mencionei, são de fato o sistema de login como um todo... e uma das partes mais importantes é a verificação de sessão dentro das páginas restritas.

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

Basta criar sessão de novo, inserir $_SESSION["error"] = "Você foi deslogado" fechar a escrita da sessão

Redirecionar...

Verificar se existe a variável, na pagina inicial, se existir soltar ele na mensagem...

:)

Esqueci de falar para destruir de novo a sessão ou dar unset... 

Pode fazer por cookie também já que ira redirecionar de todo jeito

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...