par
nestor94 » 15 févr. 2022, 17:16
J'ai un autre soucis sur le script de réinitialisation de mot de passe !
extrait du script
<?php
session_start();
require_once 'config.php';
$msg = '';
if (!empty($_POST)) { // Si le formulaire a été soumis
if (!empty($_POST['mail'])) { // Si le formulaire est correctement rempli
// On fait une requête pour savoir si l'adresse e-mail est associé à un compte
$pdostat = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres WHERE mail = ?');
$pdostat->bindValue(1, $_POST['mail']);
$pdostat->execute();
$row = $pdostat->fetch(PDO::FETCH_ASSOC);
if (!empty($row) && $row['nb'] > 0) { // Si l'adresse courriel est associé à un compte
// On génère notre token
$string = implode('', array_merge(range('A','Z'), range('a','z'), range('0','9')));
$token = substr(str_shuffle($string), 0, 20);
// On insère la date et le token dans la base
$pdostat = $bdd->prepare('UPDATE membres SET password_recov_asked_date = NOW(), password_recovery_token = ? WHERE mail = ?');
$pdostat->bindValue(1, $token);
$pdostat->bindValue(2, $email);
// $pdostat->bindvalue('1',$token ,PDO::PARAM_INT);
// $pdostat->bindvalue('2',$mail ,PDO::PARAM_STR);
$pdostat->execute();
..........
c'est la partie UPDATE qui ne se fait pas.
Lorsque je teste, je reçois bien le message mais lors du clic sur le lien, ça m'affiche "le token n'a pas été trouvé"
et effectivement, il n'est pas créé auparavant en table...
J'ai un autre soucis sur le script de réinitialisation de mot de passe !
extrait du script
[PHP]
<?php
session_start();
require_once 'config.php';
$msg = '';
if (!empty($_POST)) { // Si le formulaire a été soumis
if (!empty($_POST['mail'])) { // Si le formulaire est correctement rempli
// On fait une requête pour savoir si l'adresse e-mail est associé à un compte
$pdostat = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres WHERE mail = ?');
$pdostat->bindValue(1, $_POST['mail']);
$pdostat->execute();
$row = $pdostat->fetch(PDO::FETCH_ASSOC);
if (!empty($row) && $row['nb'] > 0) { // Si l'adresse courriel est associé à un compte
// On génère notre token
$string = implode('', array_merge(range('A','Z'), range('a','z'), range('0','9')));
$token = substr(str_shuffle($string), 0, 20);
// On insère la date et le token dans la base
$pdostat = $bdd->prepare('UPDATE membres SET password_recov_asked_date = NOW(), password_recovery_token = ? WHERE mail = ?');
$pdostat->bindValue(1, $token);
$pdostat->bindValue(2, $email);
// $pdostat->bindvalue('1',$token ,PDO::PARAM_INT);
// $pdostat->bindvalue('2',$mail ,PDO::PARAM_STR);
$pdostat->execute();
..........
[/PHP]
c'est la partie UPDATE qui ne se fait pas.
Lorsque je teste, je reçois bien le message mais lors du clic sur le lien, ça m'affiche "le token n'a pas été trouvé"
et effectivement, il n'est pas créé auparavant en table...