php password_verify () hash y pass no coincidirán
Guardo mis contraseñas en mi base de datos hash con password_hash (), y estoy tratando de verificar las contraseñas al iniciar sesión con password_verify (). Por alguna razón, password_verify () sigue devolviendo false.
Leí la documentación sobre esta función y decía para asegurarme de que el hash utilizado en la función está entre comillas simples '' de lo contrario leerá el hash como si fueran tres variables debido a los $ 's, así que intenté escribir $ valid como este '$ válido'. Pero eso no funcionó.
Cuando echo $ valid la salida es $ 2y $ 10 $ zzZCN7UlukvY2skb3ELVp.4y3Oc7NJTEsFyqdstqYxT
Cuando echo $ check, la salida es 123, que es la contraseña utilizada para crear la cuenta.
Esta es la parte de mi login.php, y aquí es donde creo que está el 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);
Esto es parte de mi verificar.php
function VUP($check, $valid){
if (password_verify($check, $valid)) {
$key = 1;
} else {
echo 'Invalid password.';
$key = 0;
die();
}
return $key;
}
También parte de verificado.php
function SHP($password){
$hash = password_hash('$password', PASSWORD_BCRYPT);
return $hash;
}
Cualquier consejo sería muy útil.