DinhoPHP 1 Denunciar post Postado Fevereiro 15, 2017 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
DinhoPHP 1 Denunciar post Postado Fevereiro 16, 2017 Solcionada a parte do If e Else exibir a mensagem correta para o usuário. Agora partirei para o aprimoramento do sistema. http://blog.ultimatephp.com.br/sistema-de-login-php/ Citar Compartilhar este post Link para o post Compartilhar em outros sites