PHP - Error al realizar cambio de contraseña

 
Vista:
Imágen de perfil de yoclens
Val: 19
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al realizar cambio de contraseña

Publicado por yoclens (20 intervenciones) el 30/03/2024 23:04:51
Tengo un problema a la hora de poder realizar el cambio de contraseña siempre se me queda en el if del password_verify, así ponga la contraseña correcta siempre me da el mismo mjs Ups Aviso: La contraseña actual es incorrecta. no se si es la lógica del código que esta mala, pero en verdad esto me tiene full estrés, agradecería de su ayuda.

archivo: contrasena.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<form class=" " action='config_cambiar_contrasena.php' name="frmContacto" method="POST">
 
 
    <div class="field-body">
        <div class="field">
           <label class="label">Contraseña Actual</label>
           <div class="control">
           <input class="input is-small" type="password" name="contrasena" autocomplete="off" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w\S{8,}" required/>
           </div>
         </div>
 
        <div class="field">
           <label class="label">Nueva Contraseña</label>
            <div class="control">
             <input class="input is-small" type="password" name="nueva_contrasena"  pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w\S{8,}" required/>
           </div>
         </div>
 
        <div class="field">
           <label class="label">Confirmar Nueva Contraseña</label>
           <div class="control">
           <input class="input is-small" type="password" name="verificar_nueva_contrasena" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z])\w\S{8,}" required/>
           </div>
         </div>
    </div>
 
   <br>
 
        <div class="columns is-mobile is-centered">
           <div class="buttons">
              <button class="button is-link is-small" type="submit" name="cambiar_contrasena">MODIFICAR CONTRASEÑA</button>
 
            </div>
        </div>
 
        <input type='hidden' name='id_usuario' value='<?php echo $editar_linea['id_usuario']; ?>'>
</form>


archivo: config_cambiar_contrasena.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
session_start();
error_reporting(E_ALL);
include "../conexion/conexion.php";
 
if (isset($_POST['cambiar_contrasena'])) {
 
    // Consultar campos vacíos
    $contrasena = $_POST['contrasena'];
    $nueva_contrasena = $_POST['nueva_contrasena'];
    $verificar_nueva_contrasena = $_POST['verificar_nueva_contrasena'];
 
    if (empty(trim($contrasena)) || empty(trim($nueva_contrasena)) || empty(trim($verificar_nueva_contrasena))) {
 
        $_SESSION['errMSG'] = "¡Ups! Aviso: No pueden haber campos vacíos.";
 
    } else {
 
     // Consultar la contraseña actual guardada en la base de datos
     $cedula = $_SESSION['cedula'];
     $sql = "SELECT contrasena FROM usuario WHERE cedula = :cedula LIMIT 1";
     $stmt = $DB_con->prepare($sql);
     $stmt->bindParam(':cedula', $cedula, PDO::PARAM_STR);
     $stmt->execute();
 
     if ($stmt->rowCount() > 0) {
            $row = $stmt->fetch(PDO::FETCH_ASSOC);
 
            $contrasena = $row['contrasena'];
 
          if (password_verify($contrasena, $row['contrasena'])) {
 
              if ($nueva_contrasena != $verificar_nueva_contrasena) {
 
                       $_SESSION['errMSG'] = "¡Ups! Las contraseñas no coinciden.";
 
                  } else {
 
                           $sql = "UPDATE usuario SET contrasena = :nueva_contrasena WHERE cedula = :cedula";
                           $stmt = $DB_con->prepare($sql);
                           $stmt->bindParam(':nueva_contrasena', $nueva_contrasena, PDO::PARAM_STR);
                           $stmt->bindParam(':cedula', $cedula, PDO::PARAM_STR);
                           if ($stmt->execute()) {
 
                                 $_SESSION['successMSG'] ="¡ Bien Hecho: Contraseña actualizada con éxito. !";
 
                                  } else {
 
                                       $_SESSION['errMSG'] = "¡Ups! No se pudo cambiar la contraseña.";
 
                                    }
                         }
 
              } else {
                       $_SESSION['errMSG'] = "¡ Ups Aviso: La contraseña actual es incorrecta. !";
                     }
 
      }
   }
}
header('location: contrasena.php');
exit;
?>
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 javier
Val: 1.542
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error al realizar cambio de contraseña

Publicado por javier (547 intervenciones) el 31/03/2024 16:58:34
Hola

Aqui:
1
2
3
$contrasena = $row['contrasena'];
 
                    if (password_verify($contrasena, $row['contrasena'])) {

Estas asignando a $contrasena el valor de la base de datos, cuando en la linea 9 le asignas el valor que viene del formulario
1
$contrasena = $_POST['contrasena'];

prueba:

1
2
3
4
// comenta esta linea , no sirve
//$contrasena = $row['contrasena'];
 
                    if (password_verify($contrasena, $row['contrasena'])) {
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
Imágen de perfil de yoclens
Val: 19
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al realizar cambio de contraseña

Publicado por yoclens (20 intervenciones) el 31/03/2024 22:41:01
Hola gracias por tu aporte eso lo intente, pero igual sigue el problema.
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
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Error al realizar cambio de contraseña

Publicado por Alejandro (839 intervenciones) el 01/04/2024 18:19:16
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
En la base de datos guardas el hash ¿cierto?
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
Imágen de perfil de yoclens
Val: 19
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Error al realizar cambio de contraseña

Publicado por yoclens (20 intervenciones) el 02/04/2024 05:26:39
no, lo guardo normal
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