Bonjour,

Voila je rencontre un petit problème avec mon code.

<?php
    if(isset($_GET['id']) && isset($_GET['reset_clef'])){
        require_once('includes/bdd/connexionbdd.php');
        $req = $pdo->prepare('SELECT * FROM utilisateurs WHERE id = ? AND reset_clef IS NOT NULL AND reset_clef = ? AND reset_clef_le > DATE_SUB(NOW(), INTERVAL 30 MINUTE)');
        $req->execute([$_GET['id'], $_GET['reset_clef']]);
        $utilisateurs = $req->fetch();
        if($utilisateurs){
            if(!empty($_POST)){
                if(!empty($_POST['password']) && $_POST['password'] == $_POST['passwordconfirm']){
                    $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
                    $pdo->prepare('UPDATE utilisateurs SET password = ?, reset_clef_le = NULL, reset_clef = NULL')->execute([$password]);
                    session_start();
                    $_SESSION['MessFlash']['success'] = 'Votre mot de passe a bien été modifié';
                    $_SESSION['authentification'] = $utilisateurs;
                    header('Location: index.php');
                    exit();
                }
            }
        }else{
            $_SESSION['MessFlash']['warning'] = "Cette clef de réinitialisation du mot de passe n'est pas valide !";
            header('Location: recuperation.php');
            exit();
        }
    }else{
        header('Location: index.php');
        exit();
    }
?>

Ce que je fais

Après avec reçu mon lien de réinitialisation dans ma boite mail, je clic dessus et je suis directement redirigé vers la page qui contien le formulaire d'envoi d'email pour la réinitialisation du mot de passe.

Ce que je veux

Je souhaite afficher le formulaire de réinitialisation du mot de passe et que le traitement du changement se fasse.

Auriez-vous une idée ?

Merci d'avance

Ce que j'obtiens

En mettant uniquement ce bout de code, mon formulaire de réinitialisation s'afiche bien, mais ne peux pas être traiter.:

<?php
    if(isset($_GET['id']) && isset($_GET['reset_clef'])){
        require_once('includes/bdd/connexionbdd.php');
        $req = $pdo->prepare('SELECT * FROM utilisateurs WHERE id = ? AND reset_clef IS NOT NULL AND reset_clef = ? AND reset_clef_le > DATE_SUB(NOW(), INTERVAL 30 MINUTE)');
        $req->execute([$_GET['id'], $_GET['reset_clef']]);

        /*RAJOUT CODE*/

    }else{
        header('Location: index.php');
        exit();
    }
?>

Par contre, si je rajoute (RAJOUT CODE) le code ci-dessous, le formulaire de réinitialisation ne s'affiche pas et j'ai ma redirection qui s'active directement vers monsite/rececuperation.php :

if($utilisateurs){
            if(!empty($_POST)){
                if(!empty($_POST['password']) && $_POST['password'] == $_POST['passwordconfirm']){
                    $password = password_hash($_POST['password'], PASSWORD_BCRYPT);
                    $pdo->prepare('UPDATE utilisateurs SET password = ?, reset_clef_le = NULL, reset_clef = NULL')->execute([$password]);
                    session_start();
                    $_SESSION['MessFlash']['success'] = 'Votre mot de passe a bien été modifié';
                    $_SESSION['authentification'] = $utilisateurs;
                    header('Location: index.php');
                    exit();
                }
            }
        }else{
            $_SESSION['MessFlash']['warning'] = "Cette clef de réinitialisation du mot de passe n'est pas valide !";
            header('Location: recuperation.php');
            exit();
        }

Aucune réponse