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>';
}
}
?>