php password_verify () hash e pass não coincidem
Eu armazeno minhas senhas no meu banco de dados com hash password_hash () e estou tentando verificar as senhas no login com password_verify (). Por algum motivo, password_verify () continua retornando false.
Eu li a documentação dessa função e ela disse para garantir que o hash usado na função esteja entre aspas simples '', caso contrário, ele lerá o hash como se fossem três variáveis por causa dos $ 's, então tentei escrever $ valid como este '$ valid'. Mas isso não funcionou.
Quando echo $ valid, a saída é $ 2y $ 10 $ zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT
Quando echo $, a saída é 123, que é a senha usada para criar a conta.
Esta é a parte do meu login.php, e é aqui que sinto o problema.
$emailLogin = mysqli_real_escape_string($con, $_POST['emailLogin']);
$passLogin = mysqli_real_escape_string($con, $_POST['passLogin']);
$query = "SELECT `pass` FROM `user` WHERE `email`='$emailLogin'";
$result = mysqli_query($con, $query);
$row = mysqli_fetch_array($result);
$pass = $row['pass'];
$key = VUP($passLogin, $pass);
Isso faz parte do meu confirm.php
function VUP($check, $valid){
if (password_verify($check, $valid)) {
$key = 1;
} else {
echo 'Invalid password.';
$key = 0;
die();
}
return $key;
}
Também parte do confirm.php
function SHP($password){
$hash = password_hash('$password', PASSWORD_BCRYPT);
return $hash;
}
Qualquer conselho seria muito útil.