Ir para conteúdo

POWERED BY:

Arquivado

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

santosbio

[Resolvido] Problemas com session_destroy()

Recommended Posts

Gente... criei um sistema de login para uma área de cadastro de notícias.

Estou utilizando $_SESSIONS para autenticar.

 

criei as sessions da seguinte forma:


<?PHP
session_start();

include "inc/conecta.php";

$loginUser = $_POST['login'];
$senhaUser = $_POST['senha'];

$confirmacao = mysql_query("SELECT * FROM tabela WHERE login LIKE '$loginUser' AND senha = '$senhaUser'");
$contagem = mysql_num_rows($confirmacao);

if ($contagem == 1) {

	$_SESSION['user'] = $loginUser;
	$_SESSION['pssw'] = $senhaUser;

	include "admin.php";

} else {

...
...

 

Depois de logado, eu incluo a página abaixo pra fazer a verificação nas páginas restritas:


<?PHP
session_start();

include "inc/conecta.php";

//seto as variáveis com os valores armazenado na sessão
$loginUser = $_SESSION['user'];
$senhaUser = $_SESSION['pssw'];

//procuro no db pela coincidência desses valores
$confirmacao = mysql_query("SELECT * FROM tabela WHERE login LIKE '$loginUser' AND senha = '$senhaUser'");
$contagem = mysql_num_rows($confirmacao);

//se	a variável $contagem retornar um registro:
if ($contagem == 1) {	


//crio uma outra variável na sessão e defino um valor pra ela		
	$_SESSION['estaLogado'] = "ok";
}
?>

 

 

Em cada página restrita, eu incluo a página acima e crio as condições:


<?PHP
session_start();

require ("permissao.php");
$valida = $_SESSION['estaLogado'];

if( $valida == "ok"){
?>

<!-- aqui vai a página restrita -->


<?PHP
 			} else {?>

<!-- aqui vai a página de erro de autenticação -->


<?PHP }

?>

 

 

 

só que os valores da sessão nunca são destruídos. Na página de logout, eu coloquei o seguinte:


<?PHP
session_start();
$_SESSION = array(); 
session_destroy();

header ("Location: login.php");
?>

Alguém aí pode me dar uma luz pra esse problema?
Agradeço desde já =)

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente dar um "unset" nas sessions, dar um ob_start também, mais ou menos assim:

 

<?php
ob_start();
session_start();
unset($_SESSION['estaLogado']);
unset($_SESSION['outra session']);
session_destroy();

?>

 

Veja no que dá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente dar um "unset" nas sessions, dar um ob_start também, mais ou menos assim:

 

<?php
ob_start();
session_start();
unset $_SESSION['estaLogado'];
unset $_SESSION['outra session'];
session_destroy();

?>

 

Veja no que dá.

 

 

Gente... nenhuma das 2 soluções funcionaram... ¬¬

 

 

 

-------------------------------------

UPDATE

------------------------------------

 

Acabei de descobrir que mesmo quando a pessoa não logou no site, ela tem acesso à página administrativa.

¬¬

 

Uma dúvida: as $_SESSIONS ficam armazenadas no navegador ou no servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

passei pelo mesmo problema e consegui resolver desta forma:

 

substitua

header ("Location: login.php");

 

por

echo "<script>window.location.href = 'login.php';</script>";
exit;

Compartilhar este post


Link para o post
Compartilhar em outros sites

passei pelo mesmo problema e consegui resolver desta forma:

 

substitua

header ("Location: login.php");

 

por

echo "<script>window.location.href = 'login.php';</script>";
exit;

 

Nem assim.

 

Pra testar, eu criei 3 variáveis e defini cada uma delas com o valor de uma das sessions.

A session $_SESSION['estaLogado'] sempre aparece setada com o valor de login, mesmo se eu acessar a página de outro pc que nunca abriu a página (e nunca fez login).

 

afff

 

 

 

 

 

gremio10

O que você disse seria isso:

 


<?PHP
       session_start();

       require ("permissao.php");
       $valida = $_SESSION['estaLogado'];

       if( $valida == "ok"){
?>

<!-- aqui vai a página restrita -->


<?PHP
                       } else {?>

<!-- aqui vai a página de erro de autenticação -->


<?PHP }

?>

 

 

Se sim, já estou usando esse código nas páginas de acesso restrito.

 

Tu tem uma pagina de validação de Sessions ?

 

se tiver, chame na primeira linha de todas as paginas que voce quer proteger

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria algo assim:

 

session_start();
if(isset($_SESSION["suaSessao"])){
$suaVariavel = $_SESSION["suaSessao"];
}else{
exit;
}

 

Não entendi uma coisa... isso é pra validar o login e permitir o acesso à página?

Se sim, eu estou fazendo de outra maneira:

 

Dentro do arquivo "permissão.php", eu inseri uma condição pra que, caso o login exista no banco de dados, uma variável é criada e o valor da sessão é transmitido pra ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo... =]

 

o que ocorria é que cada vez q ele lia o arquivo "permissão.php, ele setava a session com o valor que eu estava usando pra validar o login.

Ou seja, eu excluía o valor e retornava ele toda vez q eu saía da página de logout e entrava em uma página restrita.

 

Vlw galera

 

\o/

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.