Boa tarde, amigos. Estou criando um sisteminha simples de login. Consigo cadastrar o usuário, e tudo funciona salvando a senha crua no banco de dados. Mas quando tento usar hash para criptografar, ela salva criptografada no BD, mas na hora do login, dá senha inváilda. Alguém pode me ajudar com os códigos?
Página inserir novo usuário:
<?php
include_once 'connect.php';?><!DOCTYPE html><htmllang="pt-br"><head><metacharset="UTF-8"><metaname="viewport"content-"width=device-width, initial-scale=1.0"><metahttp-equiv="X-UA-Compatible"content="ie=edge"><title>Cadastro de Usuário</title><style>
body{font-family: Arial, Helvetica, sans-serif}.content{display:flex;justify-content: center}.contato{width:100%;max-width:500px;}.form{display: flex;flex-direction: column}.field{padding:10px;margin-bottom:15px;border:1px solid #DDD;border-radius:5px;font-family: Arial, Helvetica, sans-serif;font-size:16px}.field2{padding:10px;margin-bottom:15px;border:1px solid #ADD8E6;background-color:#ADD8E6;border-radius:5px;font-family: Arial, Helvetica, sans-serif;font-size:16px}.field2:hover{padding:10px;margin-bottom:15px;border:1px solid #87CEFA;background-color:#87CEFA;border-radius:5px;font-family: Arial, Helvetica, sans-serif;font-size:16px;font-weight:bold;}</style><script>function confereSenha(){const senha = document.querySelector('input[name=senha]');const confirma_senha = document.querySelector('input[name=confirma_senha');if(confirma_senha.value === senha.value){
confirma_senha.setCustomValidity('');}else{
confirma_senha.setCustomValidity('As senhas digitadas não conferem! Elas precisam ser iguais.');}}</script></head><body><sectionclass="content"><divclass="contato"><h2>Cadastro</h2>
Por favor, preencha todos os dados para criar um novo usuário.<br><br><?php
$dados = filter_input_array(INPUT_POST, FILTER_DEFAULT);if(!empty($dados['CadUsuario'])){
var_dump($dados['senha']);
$query_usuario ="INSERT INTO usuario (nome, email, senha, situacoe_id, niveis_acesso_id, created, modified) VALUES (:nome, :email, :senha, :situacoe_id, :niveis_acesso_id, :created, :modified)";
$cad_usuario = $conn->prepare($query_usuario);
$cad_usuario->bindParam(':nome', $dados['nome'], PDO::PARAM_STR);
$cad_usuario->bindParam(':email', $dados['email'], PDO::PARAM_STR);
$cad_usuario->bindParam(':senha', password_hash($dados['senha'], PASSWORD_BCRYPT,['cost=>12']));
$cad_usuario->bindParam(':situacoe_id', $dados['situacoe_id'], PDO::PARAM_STR);
$cad_usuario->bindParam(':niveis_acesso_id', $dados['niveis_acesso_id'], PDO::PARAM_STR);
$cad_usuario->bindParam(':created', $dados['created'], PDO::PARAM_STR);
$cad_usuario->bindParam(':modified', $dados['modified'], PDO::PARAM_STR);
$cad_usuario->execute();if($cad_usuario->rowCount()){
echo "<p style='color: green;'>Usuário cadastrado com sucesso!</p>";}else{
echo "<p style='color: #ff0000;'>Erro ao cadastrar usuário!</p>";}}?><formname="cad_usu"class="form"method="POST"action=""><inputclass="field"name="nome"placeholder="Nome"required><inputclass="field"type="email"name="email"placeholder="E-mail"required><inputclass="field"type="password"name="senha"placeholder="Senha"requiredonchange='confereSenha();'><inputclass="field"type="password"name="confirma_senha"placeholder="Confirmar Senha"requiredonchange='confereSenha();'><inputtype="hidden"name="situacoe_id"value="1"><inputtype="hidden"name="niveis_acesso_id"value="1">
<input type="hidden" name="created" value='<?php echo date("Y-m-d H:i:s");?>'>
<input type="hidden" name="modified" value='<?php echo date("Y-m-d H:i:s");?>'>
<inputclass="field2"type="submit"name="CadUsuario"value="Cadastrar Usuário"><inputclass="field2"type="reset"value="Limpar Formulário"></form></div></section></div></body></html>
Código de login:
<?php
session_start();
include_once 'connect.php';?><!DOCTYPE html><htmllang="pt-br"><head><metacharset="UTF-8"><metaname="viewport"content-"width=device-width, initial-scale=1.0"><metahttp-equiv="X-UA-Compatible"content="ie=edge"><title>Cadastro de Usuário</title><style>
body{font-family: Arial, Helvetica, sans-serif}.content{display:flex;justify-content: center}.contato{width:100%;max-width:500px;}.form{display: flex;flex-direction: column}.field{padding:10px;margin-bottom:15px;border:1px solid #DDD;border-radius:5px;font-family: Arial, Helvetica, sans-serif;font-size:16px}.field2{padding:10px;margin-bottom:15px;border:1px solid #ADD8E6;background-color:#ADD8E6;border-radius:5px;font-family: Arial, Helvetica, sans-serif;font-size:16px}.field2:hover{padding:10px;margin-bottom:15px;border:1px solid #87CEFA;background-color:#87CEFA;border-radius:5px;font-family: Arial, Helvetica, sans-serif;font-size:16px;font-weight:bold;}</style></head><body><sectionclass="content"><divclass="contato"><h2>Login</h2>
Por favor, entre com o e-mail e a senha cadastrados.<br><br><?php
$dados = filter_input_array(INPUT_POST,FILTER_DEFAULT);if(!empty($dados['SendLogin'])){
$query_usuario ="SELECT id, nome, email, senha
FROM usuario
WHERE email =:email AND senha =:senha
LIMIT 1";
$result_usuario = $conn->prepare($query_usuario);
$result_usuario->bindParam(':email', $dados['email']);
$result_usuario->bindParam(':senha', password_hash($dados['senha'], PASSWORD_BCRYPT,['cost=>12']));
$result_usuario->execute();if(($result_usuario) AND ($result_usuario->rowCount()!=0)){
$row_usuario = $result_usuario->fetch(PDO::FETCH_ASSOC);if($dados['senha']== $row_usuario['senha']){
$_SESSION['id']= $row_usuario['id'];
$_SESSION['nome']= $row_usuario['nome'];
header("Location: painel.php");}else{
$_SESSION['msg']="<p style='color: red'>Erro: Usuário e/ou senha inválidos!</p>";}}else{
$_SESSION['msg']="<p style='color: red'>Erro: Usuário e/ou senha inválidos!</p>";}}if(isset($_SESSION['msg'])){
echo $_SESSION['msg'];
unset($_SESSION['msg']);}?><formname="cad_usu"class="form"method="POST"action=""><inputclass="field"type="email"name="email"placeholder="E-mail"required><inputclass="field"type="password"name="senha"placeholder="Senha"required><inputclass="field2"type="submit"name="SendLogin"value="Entrar no Sistema"><inputclass="field2"type="reset"value="Limpar Formulário"></form></div></section></div></body></html>
Pergunta
mm_edilson
Boa tarde, amigos. Estou criando um sisteminha simples de login. Consigo cadastrar o usuário, e tudo funciona salvando a senha crua no banco de dados. Mas quando tento usar hash para criptografar, ela salva criptografada no BD, mas na hora do login, dá senha inváilda. Alguém pode me ajudar com os códigos?
Página inserir novo usuário:
Código de login:
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.