Sessão

Boa noite galera, estou com uma dúvida em relação a um sistema de login com sessão. Fiz a classe de usuário e a função de login e até agora tudo certo. Agora preciso verificar se a sessão realmente está aberta, alguém tem alguma dica ou material de apoio ? segue a classe e as funções

class usuarioLogado
{
private $con;
private $json;
private $email;
private $senha;

public function __construct()
{
    $this->con = new Conexao();
    $this->json = new JsonResposta();
}

public function setEmail($email)
{
    $this->email = $email;
}

public function setSenha($senha)
{
    $this->senha = md5($senha);
}

public function logaUsuario()
{
    try {
        $pdo = $this->con->conecta();
        $buscaUsuario = $pdo->prepare("SELECT u.email, u.senha FROM usuarios AS u WHERE email=:email AND senha = :senha;");
        $buscaUsuario->bindValue(":email", $this->email, PDO::PARAM_STR);
        $buscaUsuario->bindValue(":senha", $this->senha,PDO::PARAM_STR);
        $buscaUsuario->execute();
        if ($buscaUsuario->rowCount() == 0) {
            $json = $this->json->json_response("200","Usuário ou senha inválidos");
            echo $json;
        } else {
            session_start();
            $rst = $buscaUsuario->fetch();
            $_SESSION["logado"] = "sim";
            $_SESSION["email"] = $rst["email"];
            $json = $this->json->json_response("200","Logado com sucesso",$_SESSION['email']);
            echo $json;
        }
    } catch (PDOException $e) {
        echo "Erro" . $e->getMessage();
    }
}

public function usuarioEstaLogado($email)
{
    $this->email = $email;
    $pdo = $this->con->conecta();
    $buscaUsuario = $pdo->prepare("SELECT email FROM usuarios WHERE email=:email;");
    $buscaUsuario->bindParam(":email", $this->email, PDO::PARAM_STR);
    $buscaUsuario->execute();
    $resultado = $buscaUsuario->fetch();
    $_SESSION['email'] = $resultado['email'];
    $json = $this->json->json_response("200","Bem vindo".$_SESSION['email']);
    echo $json;

}

public function sairUsuario()
{
    session_destroy();
    $json = $this->json->json_response("200","Logout efetuado com sucesso");
    echo $json;
}

}

http://www.samitkhulve.com/php-tutorials/how-check-php-session-has-already-started-or-not

1 curtida

Recomendações:

1 - Evite usar md5 para logins, esse formato já não é tão seguro, sendo facilmente “quebrável” (faça um teste e cole a senha gerada no google e veja o resultado)

2 - Se a versão do php for >=5.5 recomendo a API de hashing

3 - Caso sua versão seja inferior, procure usar sha1 ou hash no formato sha256 por exemplo

1 curtida

Opa, vou dar uma olhada nesse material!