I applied encryption passwords using password_hash()
.
When I try to login using password_verify
I can not access. I think the problem is in the $row = $query->fetch(PDO::FETCH_ASSOC)
part because when I do var_damp($row)
it does not return anything.
This is the code (method CheckUser
of class Usuario
).
public function CheckUser() {
// Try and cacth para capturar errores
try {
// Guardamos la sentencia sql para sacar obtener al usuario de la base de datos
$sql = 'SELECT * FROM usuarios WHERE usuario = ? AND password = ?';
// Preparamos la consulta con la sentencia guardada en $sql usando el atributo de la clase Conexion
$query = $this->conexion_db->prepare($sql);
// Evitamos inyección sql
$user = htmlentities(addslashes($_POST['user']));
$password = htmlentities(addslashes($_POST['password']));
// Ligamos los parámetros de la consulta usando bindParam con lo que haya escrito el usuario en el formulario de login
$query->bindParam(1, $user, PDO::PARAM_STR);
$query->bindParam(2, $password, PDO::PARAM_STR);
// Ejecutamos la consulta
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
if(password_verify($password, $row['password'])){
// Iniciamos sesión
session_start();
// Guardamos en la variable supergoblal el nombre de usuario
$_SESSION['usuario'] = $_POST['user'];
// Guardamos la cookie
include('cookie.php');
Cookie();
// Dirigimos al usuario a una página temporal para comprobar que funciona
header('location:../index.php');
} else {
// Dirigimos al usuario de nuevo a la página de login
// header('location:../acceder.php');
echo var_dump($query->execute());
}
} catch (Exception $e) {
echo "Error en la ejecución de la consulta<br>";
echo "Mensaje: " . $e->GetMessage() . "<br>";
echo "Línea: " . $e->getLine();
}
}