Bonjour,
sur ma page mot de passe oublier, quand l'utilisateur clique sur valider cela change tous les mot de passes de mes membres.
Il y a quelques semaines cela fonctionnais très bien :/
Voici le code:
<?php
$PAGE_NAME = "Réinitialiser mon mot de passe";
require 'inc/constants.php';
require 'inc/db.php';
require 'inc/functions.php';
if(isset($_GET['id']) && isset($_GET['token'])){
$req = $pdo->prepare('SELECT * FROM users WHERE id = ? AND reset_token IS NOT NULL AND reset_token = ? AND reset_at > DATE_SUB(NOW(), INTERVAL 30 MINUTE)');
$req->execute([$_GET['id'], $_GET['token']]);
$user = $req->fetch();
if($user){
if(!empty($_POST)){
if(!empty($_POST['password']) && $_POST['password'] == $_POST['password_confirm']){
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$pdo->prepare('UPDATE users SET password = ?, reset_at = NULL, reset_token = NULL')->execute([$password]);
session_start();
$_SESSION['flash']['success'] = 'Votre mot de passe a bien été modifié';
$_SESSION['auth'] = $user;
header('Location: account.php');
exit();
}
}
}else{
session_start();
$_SESSION['flash']['error'] = "Ce token n'est pas valide";
header('Location: login.php');
exit();
}
}else{
header('Location: login.php');
exit();
}
require 'templates/template.header.php';
require 'templates/template.navbar.php';
require 'templates/template.reset.php';
require 'templates/template.footer.php';
Merci beaucoup
Bonjour Yubo,
Tu as oublié de mettre la condition WHERE dans ta requête SQL, fait plutôt comme ceci :
UPDATE users SET password = ?, reset_at = NULL, reset_token = NULL WHERE id = ?
Teste ça et donne nous ton retour, voir si le problème venait de là ou non.
Bon week-end,
Arkantos
Justement, j'avais mis cette clause avant de poster ce sujet mais une fois que je clique sur valider, page blanche :/