santosbio 0 Denunciar post Postado Março 3, 2011 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
gremio10 14 Denunciar post Postado Março 3, 2011 use o unset($_SESSION["suaSessao"]); <?PHP session_start(); unset($_SESSION["suaSessao"]); session_destroy(); header ("Location: login.php"); exit; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Março 3, 2011 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
santosbio 0 Denunciar post Postado Março 3, 2011 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
romabeckman 0 Denunciar post Postado Março 3, 2011 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
gremio10 14 Denunciar post Postado Março 3, 2011 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
santosbio 0 Denunciar post Postado Março 3, 2011 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
gremio10 14 Denunciar post Postado Março 3, 2011 Seria algo assim: session_start(); if(isset($_SESSION["suaSessao"])){ $suaVariavel = $_SESSION["suaSessao"]; }else{ exit; } Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Março 3, 2011 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
gremio10 14 Denunciar post Postado Março 3, 2011 Esse é só para ver se ele está logado mesmo ... Compartilhar este post Link para o post Compartilhar em outros sites
santosbio 0 Denunciar post Postado Março 3, 2011 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