Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Como verificar se há sessão ativa


Rafael Laurindo

Pergunta

Galera, é o seguinte, estou com problemas em verificar se uma sessão está ativa. Veja este código de exemplo.

<?php

require_once 'Main.php';

class sample_Login

{

private

$login,

$senha;

protected

$_db;

public fu

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Bom galera, eu mesmo descobri o erro. É o seguinte, antes de acessar a superglobal $_SESSION, ou ainda de destruir uma sessão, o comando session_start() deve ser dado. O novo código ficou assim:

<?php

require_once 'Main.php';

class sample_Login
{
    private
        $usuario,
        $senha;

    protected
        $_db;

    public function __construct()
    {
        $main = new sample_Main();
        $this->_db = $main->get_conn();
        if (!empty($_POST['submit']))
            $this->login();
        else
        {//Veio de um link
            session_start();
            session_destroy();
        }
    }
    
    private function login_exists($login)
    {
        $id = "
            select id
            from pessoa
            where email = '$login'
        ";
        $id = $this->_db->query($id)->fetchColumn();

        if(empty($id))
            return false;
        else
            return $id;
    }

    private function obterLogin()
    {
        $this->usuario = $_POST['txtEmail'];
        //a função md5 criptografa uma string em 32 bits
        $this->senha = md5($_POST['txtSenha']);
    }

    public function login()
    {
        $this->obterLogin();

        if (!$this->login_exists($this->usuario))
        {
            echo 'Usuário e/ou senha inválido(s)';
        }
        else
        {
            $id = $this->login_exists($this->usuario);
            $senha = "
                select senha
                from login
                where id_pessoa = '$id'
            ";

            //chama a senha do banco, já criptografada
            $senha = $this->_db->query($senha)->fetchColumn();

            //Compara a senha digitada com a senha do banco referente
            if ($this->senha == $senha)
            {
                //inicia uma sessão
                session_start();
                if (!$_SESSION)
                {
                    $_SESSION['login'] = $this->usuario;
                    echo 'não havia sessão ativa';
                }
                else{
                    echo 'há sessão ativa';
                }
            }
            else
            {
                echo 'Login inválido!';
            }
        }
    }
}

new sample_Login();

Pode-se ainda nomear uma sessão usando o comando session_name('nome'); antes do session_start();

Abraços galera, façam bom uso.

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...