diogocec 0 Denunciar post Postado Setembro 16, 2015 Bom dia, fiz um sistema simples de login, mas não consigo fazer a comparação de senha com o banco. Utilizei MD5 para criptografar.Criei dois usuários diferentes com a mesma senha e o hash gerado foi o mesmo dos dois (senha: 123, hash: 202cb962ac59075b964b07152d234b)Se ao fazer o login for informado a senha 123, não será gerado o hash acima e feita a comparação com ele?login.php <?php include 'funcoes.php'; connection(); $login = $_POST['usuario']; $senha = md5($_POST['senha']); $query = mysql_query("SELECT username, senha FROM usuario WHERE username='$login' AND senha='$senha'") or die("erro ao selecionar"); if(mysql_num_rows($query)>0){ while($row = mysql_fetch_assoc($query)){ echo "Conectado!"; } }else{ echo "Erro"; } ?> index.php <!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="format.css" /> <meta charset="UTF-8"> <title>TESTE</title> </head> <body> <form action="login.php" method="POST"> Usuário: <input type="text" id="usuario" name="usuario"/><br/> Senha: <input type="password" id="senha" name="senha"/><br/> <input type="submit" id="entrar" name="entrar" value="OK"> </form> <a href="view_cadastroUsuario.php">Cadastrar</a> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Setembro 16, 2015 Tire a senha do WHERE e selecione apenas por login. Em seguida exiba a senha vinda do banco. Vamos comparar com a gerada pelo usuário Também faça: var_dump($_POST); var_dump($senha); isso vai mostrar a senha digitada e o md5 gerado note que um simples espaço muda tudo. O hash de "123" é diferente de hash de " 123" PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/ Compartilhar este post Link para o post Compartilhar em outros sites
Hewitt 14 Denunciar post Postado Setembro 16, 2015 Tenta assim: $query = mysql_query("SELECT username, senha FROM usuario WHERE username='$login' AND senha='$senha'") or die("erro ao selecionar"); $contagem = mysql_num_rows($query); if ($contagem == 1) { echo "Conectado!"; } }else{ echo "Erro"; } ?> Não cheguei a testar, peguei de um exemplo meu aqui. Compartilhar este post Link para o post Compartilhar em outros sites
diogocec 0 Denunciar post Postado Setembro 17, 2015 Beraldo, realmente, fiz o teste aqui que você falou e ele está enviando para fazer a comparação com o banco um hash semelhante mas não igual, conforme a imagem. Não sei pq ele está adicionando um 70 no final. Compartilhar este post Link para o post Compartilhar em outros sites
diogocec 0 Denunciar post Postado Setembro 17, 2015 Hevitt, tentei aqui mas não deu certo... Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 17, 2015 A senha digita como 123 realmente tem o seu hash com 202cb962ac59075b964b07152d234b70 Vá em seu banco de dados e altere a senha para esta acima e tente novamente. Acidentalmente você pode ter editado a senha. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 17, 2015 Ou menor, Verifica no banco de dados se você por um acaso não definiu o tipo de campo como VARCHAR 30. Com isso ele irá isolar os dois ultimos caracteres já que o hash é de 32bits. O correto seria CHAR 32. Compartilhar este post Link para o post Compartilhar em outros sites
diogocec 0 Denunciar post Postado Setembro 17, 2015 Alaerte Gabriel, foi exatamente isso que aconteceu, criei com 30 o que fez que com os dois últimos caracteres não fossem gravados. Aumentei para 40 e resolveu. Muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites