Bonjour,

Je n'y arrive pas a modifier mon mot de passe. Lorsque je renseigne mon email, je reçois bien le mail avec le liens pour aller changer le mot de passe et quand je mets le mot de passe rien ne se passe?! aidez moi s'il vous plait, merci beaucoup.

<?php
$errors = [];
$success = false;
if(!empty($_POST) && isset($_POST['envoi-password'])
{
    include '../inc/init.php';

    /*$req_updateMembre = 'SELECT * FROM users WHERE email = :email AND code_reset = :code_reset';
    $sql_updateMembre = $pdo->prepare($req_updateMembre);
    $sql_update->execute(
        [
            ''
        ]
    );*/

    if(!empty($_POST['password']))
    {
        $password = trim($_POST['password']);
        $passwordHash = password_hash($password, PASSWORD_DEFAULT);
        if($passwordHash)
        {
            $sql_insertpassword = 'UPDATE users SET password = '.$passwordHash.' WHERE id = :id';
            $insert_password = $pdo->prepare($sql_insertpassword);
            $insert_password->execute(
                [
                    'password' => $passwordHash,
                    'id' => $_SESSION['id']
                ]
            );
            $success = true;
        }else{
            array_push($errors, ['password', "Une erreur s'est produite, veuillez réessayyter"]);
        }

    }
}
$return = [
    'success' => $success,
    'errors' => $errors
];

die(json_encode($success));
?>

après avoir cliquer sur le liens j'ai mis en paramètre $_GET le mail et le code_reset, lorsque je clique sur le liens sa me redirige vers la page de rset.php ou je dois modifier mon mot de passe que je n'arrive pas:

<?php
// On regarde si les paramètres sont bien renseignés
if(!empty($_GET['email']) && !empty($_GET['code_reset'])) {
  include '../inc/init.php';

  $email = $_GET['email'];
  $code_reset = $_GET['code_reset'];

  // On récupère ces données dans la base
  $sql_selectMembre = 'SELECT * FROM users WHERE email = :email AND code_reset = :code_reset';
  $req_selectMembre = $pdo->prepare($sql_selectMembre);
  $req_selectMembre->execute(
    [
      'email' => $email,
      'code_reset' => $code_reset
    ]
  );
  $nbr_selectMembre = $req_selectMembre->rowCount();

  // Si le compte existe bien
  if($nbr_selectMembre == 1) {
    $selectMembre = $req_selectMembre->fetch();

    // On mets à jour le compte actif
    $sql_updateMembre = 'UPDATE users SET code_reset = NULL WHERE id = :id';
    $req_updateMembre = $pdo->prepare($sql_updateMembre);
    $req_updateMembre->execute(
      [
        'id' => $selectMembre['id']
      ]
    );
      //page que je dois créer
    header('location: ../reset_password.php?password_confirme=true');
  }
}
?>

2 réponses


Bonsoir,
il manque le marqueur ":password" pour la requête d'UPDATE
Mais comme tu n'as pas activé l'affichage des erreurs PDO, les erreurs restes muettes

D'accord je vais voir cela.