Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Session não é destruida com o logout


geogetrindade

Question

Olá a todos, já a algum tempo tento resolver os problemas por conta própria mas não da mesmo mim cadastrei no fórum pra ver se alguém tem a gentileza de mim ajudar nisso, já que eu mim esforço mas não entendo quase nada de php, vale dizer que visitei diversos fóruns, sites de dicas, codsnippets e tutoriais pra tentar aprender mas sem sucesso pra esse problema, e eu fico :wacko: pirado quando o problema parece ser simples mas eu nem consigo corrigir, nem encontro na net quem faça essa joça funcionar, então dessa vez vamos ver se aqui eu consigo não é? rs :).

O objetivo é detonar com a sessão.

O código está aqui explicado ao máximo que pude:

<?php
session_start();                        //DIZ AO SERVIDOR QUE IRÁ TRABALHAR COM SESSIONS
if (isset($_POST['logout']))           //VERIFICA SE LOGOUT FOI CHAMADO
{                                     //INÍCIO DO BLOCO A SER EXECUTADO SE O LOGOUT FOI CHAMADO ###
$_SESSION = array();                 //REINICIALIZA SESSION
$_SERVER["passwords"]   = null;     //ZERA ESSA VARIAVEL
session_unset();                   //MATA AS VARIAVEIS DA SESSION
session_destroy();                //ELIMINIA(REINICIALIZA) SESSION
header("Location: index.php");   //REDIRECIONA PARA O LOGIN
exit();                         //PARA EXECUÇÃO DO SCRIPT..........................
}                              //FIM DESSE BLOCO .................................. ###
                              //\\Caso logout não foi chamado ele passa a executar a partir daqui
if (isset($_POST['passwords']))//\\Verifica se a senha foi digitadas no formulário.
{                               //\\Executa esse bloco comparando a senha do formulario com a do arquivo.
$login = $_POST['passwords'];    //\\Salva o valor de $_POST numa variável $login para poder comparar.
include "bd.php";                 //\\Carrega o banco de dados.
if( $login != $senha )             //\\Compara as informações que foram digitadas no formulário com a senha correta que está no banco..
{                                   //\\Esse bloco é executado somente se a senha for diferente da que está no banco:
                                     // \\Esse é o painel de login

   echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
   echo "<html>\n";
   echo "<head>\n";
   echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n";
   echo "<title>Autenticação</title>\n";
   echo "</head>\n";
   echo "<body>\n";
   echo "<center>\n";
   echo "<br>\n";
   if($_SERVER['REQUEST_METHOD'] == 'POST')
      echo "<span style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#FF0000\">Chave de acesso errada!<br><br><br></span>\n";
   else
      echo "<span style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\">Use sua chave de acesso.<br><br><br></span>\n";
   echo "<form method=\"post\" action=\"".basename(__FILE__)."\">\n";
   echo "   <table cellspacing=\"0\" cellpadding=\"3\" border=\"0\" bgcolor=\"#FFFFFF\" style=\"border:1px solid #535353;\">\n";
   echo "      <tr>\n";
   echo "         <td colspan=\"2\" bgcolor=\"#535353\" style=\"text-align:center;padding:4px;font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#FFFFFF\"><b>Login</b></td>\n";
   echo "      </tr>\n";
   echo "      <tr>\n";
   echo "         <td style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\" align=\"right\" width=\"30%\" height=\"60\">Chave:</td>\n";
   echo "         <td style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\" align=\"left\" width=\"70%\" height=\"60\"><input type=\"password\" name=\"password\" value=\"\" style=\"border:1px solid #535353;width:120px;\">  <input type=\"submit\" value=\"Login\"></td>\n";
   echo "      </tr>\n";
   echo "   </table>\n";
   echo "</form>\n";
   echo "</center>\n";
   echo "</body>\n";
   echo "</html>\n";
   exit;
}
     setcookie('$loja', $_POST['passwords'], time() + 3600*24*30); // Tento criar um cookie pra evitar ter que reenviar os dados ao recarregar!!!
}
?>

Aqui vem o código da página restrita que é exibido se a senha estiver correta.

O que ele tem que fazer é logout detonando com a sessão mais ele redireciona para a página index.php e quando eu clico na página restrita ela abre normalmente eu realmente pensei ter corrigido com o código do nosso amigo ursolouco no Link

mais depois percebi que continuava então criei esse tópico para não misturar os casos, espero ter feito o certo

O que vocês acham, onde posso ter errado? desde já obrigado.

Edited by geogetrindade
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0
Olá a todos, já a algum tempo tento resolver os problemas por conta própria mas não da mesmo mim cadastrei no fórum pra ver se alguém tem a gentileza de mim ajudar nisso, já que eu mim esforço mas não entendo quase nada de php, vale dizer que visitei diversos fóruns, sites de dicas, codsnippets e tutoriais pra tentar aprender mas sem sucesso pra esse problema, e eu fico :wacko: pirado quando o problema parece ser simples mas eu nem consigo corrigir, nem encontro na net quem faça essa joça funcionar, então dessa vez vamos ver se aqui eu consigo não é? rs :).

O objetivo é detonar com a sessão.

O código está aqui explicado ao máximo que pude:

<?php
session_start();                        //DIZ AO SERVIDOR QUE IRÁ TRABALHAR COM SESSIONS
if (isset($_POST['logout']))           //VERIFICA SE LOGOUT FOI CHAMADO
{                                     //INÍCIO DO BLOCO A SER EXECUTADO SE O LOGOUT FOI CHAMADO ###
$_SESSION = array();                 //REINICIALIZA SESSION
$_SERVER["passwords"]   = null;     //ZERA ESSA VARIAVEL
session_unset();                   //MATA AS VARIAVEIS DA SESSION
session_destroy();                //ELIMINIA(REINICIALIZA) SESSION
header("Location: index.php");   //REDIRECIONA PARA O LOGIN
exit();                         //PARA EXECUÇÃO DO SCRIPT..........................
}                              //FIM DESSE BLOCO .................................. ###
                              //\\Caso logout não foi chamado ele passa a executar a partir daqui
if (isset($_POST['passwords']))//\\Verifica se a senha foi digitadas no formulário.
{                               //\\Executa esse bloco comparando a senha do formulario com a do arquivo.
$login = $_POST['passwords'];    //\\Salva o valor de $_POST numa variável $login para poder comparar.
include "bd.php";                 //\\Carrega o banco de dados.
if( $login != $senha )             //\\Compara as informações que foram digitadas no formulário com a senha correta que está no banco..
{                                   //\\Esse bloco é executado somente se a senha for diferente da que está no banco:
                                     // \\Esse é o painel de login

   echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
   echo "<html>\n";
   echo "<head>\n";
   echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n";
   echo "<title>Autenticação</title>\n";
   echo "</head>\n";
   echo "<body>\n";
   echo "<center>\n";
   echo "<br>\n";
   if($_SERVER['REQUEST_METHOD'] == 'POST')
      echo "<span style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#FF0000\">Chave de acesso errada!<br><br><br></span>\n";
   else
      echo "<span style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\">Use sua chave de acesso.<br><br><br></span>\n";
   echo "<form method=\"post\" action=\"".basename(__FILE__)."\">\n";
   echo "   <table cellspacing=\"0\" cellpadding=\"3\" border=\"0\" bgcolor=\"#FFFFFF\" style=\"border:1px solid #535353;\">\n";
   echo "      <tr>\n";
   echo "         <td colspan=\"2\" bgcolor=\"#535353\" style=\"text-align:center;padding:4px;font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#FFFFFF\"><b>Login</b></td>\n";
   echo "      </tr>\n";
   echo "      <tr>\n";
   echo "         <td style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\" align=\"right\" width=\"30%\" height=\"60\">Chave:</td>\n";
   echo "         <td style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\" align=\"left\" width=\"70%\" height=\"60\"><input type=\"password\" name=\"password\" value=\"\" style=\"border:1px solid #535353;width:120px;\">  <input type=\"submit\" value=\"Login\"></td>\n";
   echo "      </tr>\n";
   echo "   </table>\n";
   echo "</form>\n";
   echo "</center>\n";
   echo "</body>\n";
   echo "</html>\n";
   exit;
}
     setcookie('$loja', $_POST['passwords'], time() + 3600*24*30); // Tento criar um cookie pra evitar ter que reenviar os dados ao recarregar!!!
}
?>

Aqui vem o código da página restrita que é exibido se a senha estiver correta.
O que ele tem que fazer é logout detonando com a sessão mais ele redireciona para a página index.php e quando eu clico na página restrita ela abre normalmente eu realmente pensei ter corrigido com o código do nosso amigo ursolouco no <a href="http://scriptbrasil.com.br/forum/index.php?s=&showtopic=146862&view=findpost&p=580060" target="_blank"> Link </a> mais depois percebi que continuava então criei esse tópico para não misturar os casos, espero ter feito o certo O que vocês acham, onde posso ter errado? desde já obrigado.
Olá! Pelo que percebo, não tenho certeza, mas acho que é um sistema de login. Que tal usar o LuckeLogin V1, meu sistema de login avançado feito por min mesmo? :rolleyes: Ele usa cookies, que é bem + facil de se manipular. Baixe aí 100% gratis, não leva menos que 5 min para instalação dos scripts, garanto que não vai se decepcionar, baixe-o aqui: LuckeLogin V1 ------------------------------//--------------------------- Agora voltando a sua dúvida, tente substituir seu código atual, por este:
<?php
if (isset($_POST['logout']))           //VERIFICA SE LOGOUT FOI CHAMADO
{                                     //INÍCIO DO BLOCO A SER EXECUTADO SE O LOGOUT FOI CHAMADO ###
$_SERVER["passwords"]   = null;     //ZERA ESSA VARIAVEL
session_start();  
session_unset();                   //MATA AS VARIAVEIS DA SESSION
session_destroy();                //ELIMINIA(REINICIALIZA) SESSION
header("Location: index.php");   //REDIRECIONA PARA O LOGIN
exit();                         //PARA EXECUÇÃO DO SCRIPT..........................
}                              //FIM DESSE BLOCO .................................. ###
                              //\\Caso logout não foi chamado ele passa a executar a partir daqui
if (isset($_POST['passwords']))//\\Verifica se a senha foi digitadas no formulário.
{                               //\\Executa esse bloco comparando a senha do formulario com a do arquivo.
$login = $_POST['passwords'];    //\\Salva o valor de $_POST numa variável $login para poder comparar.
include "bd.php";                 //\\Carrega o banco de dados.
if( $login != $senha )             //\\Compara as informações que foram digitadas no formulário com a senha correta que está no banco..
{                                   //\\Esse bloco é executado somente se a senha for diferente da que está no banco:
                                     // \\Esse é o painel de login

   echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
   echo "<html>\n";
   echo "<head>\n";
   echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n";
   echo "<title>Autenticação</title>\n";
   echo "</head>\n";
   echo "<body>\n";
   echo "<center>\n";
   echo "<br>\n";
   if($_SERVER['REQUEST_METHOD'] == 'POST')
      echo "<span style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#FF0000\">Chave de acesso errada!<br><br><br></span>\n";
   else
      echo "<span style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\">Use sua chave de acesso.<br><br><br></span>\n";
   echo "<form method=\"post\" action=\"".basename(__FILE__)."\">\n";
   echo "   <table cellspacing=\"0\" cellpadding=\"3\" border=\"0\" bgcolor=\"#FFFFFF\" style=\"border:1px solid #535353;\">\n";
   echo "      <tr>\n";
   echo "         <td colspan=\"2\" bgcolor=\"#535353\" style=\"text-align:center;padding:4px;font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#FFFFFF\"><b>Login</b></td>\n";
   echo "      </tr>\n";
   echo "      <tr>\n";
   echo "         <td style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\" align=\"right\" width=\"30%\" height=\"60\">Chave:</td>\n";
   echo "         <td style=\"font-size:11px;font-family:Verdana;font-weight:normal;text-decoration:none;color:#535353\" align=\"left\" width=\"70%\" height=\"60\"><input type=\"password\" name=\"password\" value=\"\" style=\"border:1px solid #535353;width:120px;\">  <input type=\"submit\" value=\"Login\"></td>\n";
   echo "      </tr>\n";
   echo "   </table>\n";
   echo "</form>\n";
   echo "</center>\n";
   echo "</body>\n";
   echo "</html>\n";
   exit;
}
     setcookie('$loja', $_POST['passwords'], time() + 3600*24*30); // Tento criar um cookie pra evitar ter que reenviar os dados ao recarregar!!!
}
?>

Aqui vem o código da página restrita que é exibido se a senha estiver correta.

Testaí, Flws!

Link to comment
Share on other sites

  • 0

OK lucke, obrigado pela atenção cara, visitei seu site, é uma ótima iniciativa parabéns, olha só, coloquei o código que você postou pra mim mais não funcionou, tentei um pouco mas sem sucesso então estou aqui tentando ir por partes sabe vou postar aqui um novo trexo:

<?php
session_start();
$password = '';
if($_SERVER['REQUEST_METHOD'] == 'POST')
{  
   include "bd.php";                                                   // Carrega o banco de dados.
   $password = isset($_POST['password']) ? $_POST['password'] : '';
   if ($password == "$senha")
   {
      $_SESSION['password'] = $password;                 // parece que aqui ele cria uma session
   }
}
else
{
   $password = isset($_SESSION['password']) ? $_SESSION['password'] : '';   //aqui eu não entendo
}
include "bd.php";                                 // de qualquer forma carrego o banco de novo
if ($password != "$senha")                         // confiro se são diferentes
{                                                   //  se for diferente o formulario de senha aparece e o script para
   //Aqui fica apenas o formulario de senha
   exit;
}
 setcookie("$loja", $_POST['passwords'], time() + 3600*24*30); // Tento criar um cookie pra evitar ter que reenviar os dados ao recarregar!!!

?>

É um seguinte quero proteger uma página permitindo um só usuário e a forma de acesso é apenas baseado na senha que fica no bd.php e é comparada com a do painel preciso que fique salvo a session para que ao carregar a página os dados não precisem ser reenviados (aparecendo uma tela chata) e quando fizer logof ele finalize e exija a senha de novo mesmo tentando recarregar a página entende conhece algum script pra isso

estou vendo como funciona seu sistema de login aqui...

Link to comment
Share on other sites

  • 0

Olá a todos concegui resolver bem o problema graças ao pessoal do criarsites então lá vai o link da página do arquivo

é só baixar de graça e adaptar os scripts foi o único que achei que deu certo para sistemas com banco de dados de texto ou sem banco de dados.

lembrando que esse sistema usa banco de dados de texto com extensão.php

Acredito que possa ser fechado o post porque já está resolvido

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...