PHP - Problema con password_hash

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con password_hash

Publicado por Luis (4 intervenciones) el 15/08/2020 00:06:39
Estoy trabajando en una pagina en la cual el administrador pueda crear usuarios, el problema es que a la hora de generar la contraseña si se ejecuta la consulta pero a la hora de querer ingresar con la nueva cuenta al log in me aparece error. Lo que pasa es que por ejemplo, si pongo como contraseña "hola", el hash me lo pasara a algo como "$2y$10$7nZ1b5si", despues de que intento ingresar con hola a mi log in no me permite, pero si entro con la credencial "$2y$10$7nZ1b5si" si me lo permite. Gracias de antemano.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (!empty($_POST['username']) && !empty($_POST['password'])) {
    $sql = "INSERT INTO user (username, password, role_id) VALUES (:username, :password, :role_id)";
    $stmt = $con->prepare($sql);
    $stmt->bindParam(':username', $_POST['username']);
    $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
    $stmt->bindParam(':password', $password);
    $stmt->bindParam(':role_id', $_POST['role_id']);
    if ($stmt->execute()) {
      $message = 'Usuario creado exitosamente.';
      header('location: login.php');
    } else {
      $message = 'Hubo un problema al crear el usuario.';
    }
  }

Este es el log in con el que estoy trabajando:

1
2
3
4
5
6
7
8
9
if(isset($_POST['username']) && isset($_POST['password'])){
        $username = $_POST['username'];
        $password = $_POST['password'];
 
        $db = new Database();
        $query = $db->connect()->prepare('SELECT *FROM user WHERE username = :username AND password = :password');
        $query->execute(['username' => $username, 'password' => $password]);
 
        $row = $query->fetch(PDO::FETCH_NUM);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de italo_pm
Val: 877
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problema con password_hash

Publicado por italo_pm (189 intervenciones) el 15/08/2020 03:43:49
Hola

con password_hash criptas la password y la guardas en el database, con password_verify comparas la password del login con la password criptada del database

luego de recuperar la password criptada de tu dataabse... por ejemplo $row["password_criptada_db"];


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//asumimos que la password criptada de tu database la recuperas con este nombre $row["password_criptada_db"];
 
$password_criptada_db = $row["password_criptada_db"];
 
// $_POST["password"] es la password del form login
 
if(password_verify($_POST["password"],$password_criptada_db)) {
 
    echo "La password es correcta...";
}
else {
 
    echo "el famoso.... oohhh noooo un error ha ocurrido, la password no coincide....";
}
 
//obviamente debes agregar lo que falta para verificar correctamente el login usuer y password....

prueba y escribes los errores.

lee siempre la documentacion oficial:

https://www.php.net/manual/es/function.password-verify.php

salud2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar