mot de passe oublié

Petit nouveau ! | 4 Messages

24 févr. 2022, 14:52

bonjour,

Je rencontre une difficulté, j'ai une première page qui traite la demande de reinitialisation du mot de passe de l'utilisateur. Celle-ci génère un token et une date de demande qui alimente ma table et envoye un mail à l'utilisateur avec lien cliquable pour qu'il en redéfinisse un nouveau. Mon soucis se situe dans le traitement de cette deuxième page. Je ne sais pas où ça pêche. Merci d'avance

Code : Tout sélectionner

<?php if (isset($_POST['reboot'])) { $query = $con->prepare('SELECT password_recovery_asked_date FROM matable WHERE password_recovery_token = ?'); $query->bindValue(1, $_GET['token']); $query->execute(); $row = $query->fetch(PDO::FETCH_ASSOC); if (empty($row)) { echo 'Ce token n\'a pas été trouvé'; exit; } // On calcul la date de la génération du token + 3hrs $dateToken = strtotime('+3 hours', strtotime($row['password_recovery_asked_date'])); $dateToday = time(); if ($dateToken < $dateToday) { // Si la date est dépassé le délais de 3hrs echo 'Token expiré !'; exit; } if (!empty($_POST['password']) && !empty($_POST['password_confirm'])) { if ($_POST['password'] === $_POST['password_confirm']) { $password = password_hash($_POST["password"], PASSWORD_BCRYPT); $query = $con->prepare('UPDATE matable SET m2p = ?, password_recovery_token = " " WHERE id_annonce = ?'); $query->binValue(1, $password); $query->binValue(2,$id); $query->execute(); //$query->execute(); $msg_m2p = '<div style="color: green;">Le mot de passe a été changé !</div>'; } else { // si les deux mots de passe ne sont pas identiques $msg_m2p = '<div style="color: red;">Les deux mots de passes ne sont pas identiques.</div>'; } } else { $msg_m2p = '<div style="color: red; ">Veuillez remplir tous les champs du formulaire.</div>'; } } ?>

Mammouth du PHP | 2703 Messages

24 févr. 2022, 14:59

il faut débuguer, par exemple, mettre un echo pour savoir si cela rentre dans ce if
if (isset($_POST['reboot']))
{

Rachi2du67
Invité n'ayant pas de compte PHPfrance

09 mars 2022, 21:17

Bonjour,

Merci Or 1

J'ai mis des echos pour débugger et l'endroit où ça bloque c'est au niveau de la requête Update

On retre bien dans la et les conditions mais mon dernier echo se situe avant la MAJ dans la bdd
J'ai même changé ma requête (ne maitrise pas bien SQL)
Mais rien ne change, merci d'avance !

Code : Tout sélectionner

$query1 = 'UPDATE matable SET m2p = :m2p, password_recovery_token = :pass WHERE id_annonce = :id'; $query2 = $con->prepare($query1); $query2->bindParam(':m2p', $password, PDO::PARAM_STR); $query2->bindParam(':pass', 'NULL', PDO::PARAM_STR); $query2->bindParam(':id', $id, PDO::PARAM_INT); $query2->execute(); // vérifier si la requête d'insertion a réussi if($query2){ echo 'Les données ont bien été insérées'; }else{ echo "Une erreur est survenue !"; }

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

10 mars 2022, 00:26

Active la gestion d'erreur de PDO en mode Warning :
https://www.php.net/manual/fr/pdo.error-handling.php

Si pas d'erreur, teste ta requête dans phpMyAdmin
Quand tout le reste a échoué, lisez le mode d'emploi...