Fórum Problema com md5() #485854
17/07/2014
0
Se eu mudar a senha no banco de dados para senha123 sem criptografia ele retorna true, só retorna quando está criptografada e dei um print na tela comparando $senha == $item['senha'] as senha conferem. O que poderia está causado o erro na query?
$senha = isset($_POST['senha']) ? $_POST['senha'] : '';
$senha = md5($senha);
$sql = "SELECT *
FROM usuarios
WHERE
email = '$usuario'
AND
senha = '$senha'";
$query = pg_query($sql);
$resultado = pg_fetch_all($query);
$numRegistros = 0;
foreach ($resultado as $link) {
$numRegistros += !empty($link['email']) ? 1 : 0;
}
if ($query){
pg_free_result($query);
} else {
// se a consulta for mal sucedida
return false;
}
// se houver apenas um usuário, retorna true
return ($numRegistros == 1) ? true : false;
Adenes Junior
Curtir tópico
+ 0Post mais votado
17/07/2014
O mais interessante seria realizar uma busca no banco de dados apenas por login e comparar a senha retornada dentro do banco de dados com o md5 informado no PHP, mas nada impede de fazer do modo que está fazendo. O padrão md5 não é muito seguro para se gerar senhas, prefiro utilizar Blowfish[1].
Particularmente não sei como está sua estrutura de banco de dados, mas o que provavelmente pode estar ocorrendo é que o valor md5 retornado seja incompatível com a capacidade do campo, por exemplo, o código md5 gerado possui 40 caracteres e sua tabela é um varchar de 20.
[1]http://blog.thiagobelem.net/criptografando-senhas-no-php-usando-bcrypt-blowfish/
David Sylvestre
Gostei + 2
Mais Posts
17/07/2014
Ronaldo Lanhellas
1 - Antes de fazer o md5($senha) tente fazer um trim() na variável $senha, caso contrário espaços em branco podem ser criptografados levando a um MD5 diferente
2 - Cheque se a senha que está no banco está mesmo criptografada e também não tem nenhum espaço (novamente use o TRIM).
Caso nenhuma das dicas acima funcione, poste aqui um var_dump($senha) antes e depois de realizar o md5($senha). E poste também o conteúdo deste registro no banco de dados.
Gostei + 0
17/07/2014
Adenes Junior
Alterei a forma de encriptação para Blowfish[1], obrigado pela diga. Agora deu certo.
$sql = "SELECT *
FROM usuarios
WHERE email = '$usuario'";
$query = pg_query($sql);
if (!($hash == $item['senha'])){
$this->erro = "A senha informada é inválida";
return false;
}
Gostei + 0
18/07/2014
David Sylvestre
Gostei + 0
21/07/2014
William
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)