Mot de passe oublier qui change tous les autres

Par Yubo, il y a 10 ans


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

2 réponses

Arkantos, il y a 10 ans

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

Yubo, il y a 10 ans

Justement, j'avais mis cette clause avant de poster ce sujet mais une fois que je clique sur valider, page blanche :/