Ir para conteúdo

Arquivado

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

DinhoPHP

[Resolvido] Ajuda com login seguro

Recommended Posts

Olá!

Estou tentando fazer um sistema de login mais seguro possível, mas de início gostaria de resolver esta questão, aonde este sistema não loga. O cadastro está acontecendo normal, o problema é com o login mesmo. Quero lembrar que este é apenas um exemplo básico para que eu possa aplicar no projeto que desejo, sem contar que os campos que trabalharei, serão estes: email e senha. Aguardo contato e agradeço desde já.

A variável login que recebe a classe açoes que contem o método Login, fica vazia com o var_dump . O arrquivo abaixo recebe o post do formulário.

<?php
require_once 'conexao.php';
require_once 'Acoes.php';
    //RECEBE OS DADOS DO FORMULÁRIO
    if(isset($_POST["email"]) && isset($_POST["senha"])) {
        $email = $_POST["email"];
        $senha = $_POST["senha"];

        $email = preg_replace('/[^[:alnum:]_.-]/', '', $email);
        $senha = sha1($senha . "spbrmitcz");

        //Executa a classe de cadastro
        $logado = new Acoes();
        $login = $logado->Login($email, $senha);

        //VERIFICA SE ESTÃO VAZIOS
        if (empty($email) || empty($senha)) {
            $msg = "Preencha todos os campos!";

            //Todos os campos preenchidos
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $msg = "Email ou senha inválidos! Por favor, digite novamente.";
            } else {

            }
        }
    }
echo "<pre><h2>".var_dump($login)."</h2></pre>";
?>

Segue o arquivo da classe Acoes.

<?php
require_once 'conexao.php';

class Acoes extends Conexao
{
    public function exibe(){
        $con = $this->pdo->prepare("SELECT * FROM profissionais");
        $con->execute();
        print_r($con->rowCount());
    }
    public function Cadastrar($nivel, $status, $nome, $rua, $email, $senha)
    {
        $check = $this->pdo->prepare("SELECT * FROM profissionais WHERE email=?");
        $check->execute(array($email));

        if ($check->rowCount() == 0) {
            $insert = $this->pdo->prepare("INSERT INTO profissionais (nivel, status, nome, rua, email, senha) VALUES (:nivel, :status,:nome, :rua,:email, :senha)");
            $insert->bindValue(":nivel", $nivel, PDO::PARAM_INT);
            $insert->bindValue(":status", $status, PDO::PARAM_INT);
            $insert->bindValue(":rua", $rua, PDO::PARAM_STR);
            $insert->bindValue(":nome", $nome, PDO::PARAM_STR);
            $insert->bindValue(":email", $email, PDO::PARAM_STR);
            $insert->bindValue(":senha", $senha, PDO::PARAM_STR);
            $insert->execute();
        }else{
            echo "<h1>Já existe um usuário cadastrado com este email!</h1>";
        }
    }

    public function Login($email, $senha){
        $datalog = $this->pdo->prepare("SELECT * FROM profissionais WHERE email=? AND senha=?");
        $datalog->bindValue(":email", $email);
        $datalog->bindValue(":senha", sha1($senha."spbrmitcz"));
        $datalog->execute(array($email, $senha));

        if ($datalog->rowCount() == 1) {
            $datalog->fetchAll(PDO::FETCH_ASSOC);
            $_SESSION["email"] = $datalog["email"];
            $_SESSION["senha"] = $datalog["senha"];
            $_SESSION["nivel"] = $datalog["nivel"];
            setcookie("logado", 1);
            $log = 1;
        }
        if (isset($log)){
            echo "<h1>Logado com sucesso!</h1>";
        }else{
            echo "<h1>Digite seu email e senha corretamente!</h1>";
        }
    }
}
?>

 

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.