PHP

Changer son mot de passe suite à la formation

Résolu

Bonjour suite à la formation (mot de passe oubliée) je souhaitait que les membres puissent changez leur mot de passe ou faire un lien pour qu'il choisissent leur nouveaux mot de passe

682 vues
30 septembre 2019 à 20:38 (Édité)
Cette pub permet au site de vivre ...

9 commentaires

Je suis content car je l'ai fait pour la première fois (personaliser un code )😄😄😄.


Voici le code :


<?php
    session_start();
    include('bd/connexionDB.php');

    if (!isset($_SESSION['id'])){
        header('Location: index.php');
        exit;
    }

    // On récupère les informations de l'utilisateur connecté
    $afficher_profil = $DB->query("SELECT *
        FROM utilisateur
        WHERE id = ?",
        array($_SESSION['id']));
    $afficher_profil = $afficher_profil->fetch();

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;

        if (isset($_POST['modification'])){
            $nom = htmlentities(trim($nom));
            $prenom = htmlentities(trim($prenom));
            $mail = htmlentities(strtolower(trim($mail)));
            $mdp = trim($mdp);
            $new_pass_crypt = crypt($mdp, "$6$rounds=5000$macleapersonnaliseretagardersecret$");

            if(empty($nom)){
                $valid = false;
                $er_nom = "Il faut mettre un nom";
            }

            if(empty($prenom)){
                $valid = false;
                $er_prenom = '<p style="color:red">Il faut mettre un prénom</p>';
            }

            if(empty($mail)){
                $valid = false;
                $er_mail = '<p style="color:red">Il faut mettre un mail</p>';

            }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){
                $valid = false;
                $er_mail = '<p style="color:red">Le mail n\'est pas valide</p>';

            }else{
                $req_mail = $DB->query("SELECT mail
                    FROM utilisateur
                    WHERE mail = ?",
                    array($mail));
                $req_mail = $req_mail->fetch();

                if ($req_mail['mail'] <> "" && $_SESSION['mail'] != $req_mail['mail']){
                    $valid = false;
                    $er_mail = '<p style="color:red">Ce mail existe déjà</p>';
                }
            }
                if(empty($mdp)){
                $valid = false;
                $er_mdp = '<p style="color:red">Il faut mettre un mot de passe</p>';
            }


            if ($valid){

                $DB->insert("UPDATE utilisateur SET prenom = ?, nom = ?, mail = ?, mdp = ?
                    WHERE id = ?",
                    array($prenom, $nom,$mail,$new_pass_crypt, $_SESSION['id']));

                $_SESSION['nom'] = $nom;
                $_SESSION['prenom'] = $prenom;
                $_SESSION['mail'] = $mail;
                $_SESSION['mdp'] = $new_pass_crypt;

                header('Location:  profil.php');
                exit;
            }   
        }
    }
?>
<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Modifier votre profil</title>
    </head>
    <body>      
        <div>Modification</div>
        <form method="post">

            <input type="text" placeholder="Votre nom" name="nom" value="<?php if(isset($nom)){ echo $nom; }else{ echo $afficher_profil['nom'];}?>" required>   

            <input type="text" placeholder="Votre prénom" name="prenom" value="<?php if(isset($prenom)){ echo $prenom; }else{ echo $afficher_profil['prenom'];}?>" required>   
           
            <input type="password" placeholder="Votre mot de passe" name="mdp" value="" >

            <input type="email" placeholder="Adresse mail" name="mail" value="<?php if(isset($mail)){ echo $mail; }else{ echo $afficher_profil['mail'];}?>" required>
                        <button type="submit" name="modification">Modifier</button>
                <?php
                if (isset($er_nom)){
                ?>
                    <div><?= $er_nom ?></div>
                <?php   
                }
                ?>
                <?php
                if (isset($er_prenom)){
                ?>
                    <div><?= $er_prenom ?></div>
                <?php   
                }
                ?>              
                <?php
                if (isset($er_mdp)){
                ?>
                    <div><?= $er_mdp ?></div>
                <?php   
                }
                ?>
                <?php
                if (isset($er_mail)){
                ?>
                    <div><?= $er_mail ?></div>
                <?php   
                }
                ?>

        </form>
    </body>
</html>

@Didoub74,


Dans ce cas, copie sur un autre code déjà mis dans le tiens, et tu remplaces par exemple e-mail par passwd ou le nom exacte de ton champs de ta table user

@Didoub74,


Le code que tu as mis ci-dessous est le code pour modifier des informations sur un utilisateur ?

Tu souhaites intégrer le changement de mot de passe dedans ?

Sorry😅😅 je me suis trompé de code : voici le bon code :


<?php
    session_start();
    include('bd/connexionDB.php');

    if (!isset($_SESSION['id'])){
        header('Location: index.php');
        exit;
    }

    // On récupère les informations de l'utilisateur connecté
    $afficher_profil = $DB->query("SELECT *
        FROM utilisateur
        WHERE id = ?",
        array($_SESSION['id']));
    $afficher_profil = $afficher_profil->fetch();

    if(!empty($_POST)){
        extract($_POST);
        $valid = true;

        if (isset($_POST['modification'])){
            $nom = htmlentities(trim($nom));
            $prenom = htmlentities(trim($prenom));
            $mail = htmlentities(strtolower(trim($mail)));

            if(empty($nom)){
                $valid = false;
                $er_nom = "Il faut mettre un nom";
            }

            if(empty($prenom)){
                $valid = false;
                $er_prenom = "Il faut mettre un prénom";
            }

            if(empty($mail)){
                $valid = false;
                $er_mail = "Il faut mettre un mail";

            }elseif(!preg_match("/^[a-z0-9\-_.]+@[a-z]+\.[a-z]{2,3}$/i", $mail)){
                $valid = false;
                $er_mail = "Le mail n'est pas valide";

            }else{
                $req_mail = $DB->query("SELECT mail
                    FROM utilisateur
                    WHERE mail = ?",
                    array($mail));
                $req_mail = $req_mail->fetch();

                if ($req_mail['mail'] <> "" && $_SESSION['mail'] != $req_mail['mail']){
                    $valid = false;
                    $er_mail = "Ce mail existe déjà";
                }
            }

            if ($valid){

                $DB->insert("UPDATE utilisateur SET prenom = ?, nom = ?, mail = ?
                    WHERE id = ?",
                    array($prenom, $nom,$mail, $_SESSION['id']));

                $_SESSION['nom'] = $nom;
                $_SESSION['prenom'] = $prenom;
                $_SESSION['mail'] = $mail;

                header('Location:  profil.php');
                exit;
            }   
        }
    }
?>

@Didoub74,


Quelle erreur obtiens-tu ?


Ton code m'a l'air d'être correcte pour ton changement de mot de passe


Bonjour @Didoub74


Pour faire un système de changement de mot de passe, il faut que tu fasses un formulaire de l’espace membre avec une validation qui te fait un UPDATE par rapport au PSEUDO ou l’ID.


Donc sa donnerai un truc du genre :

('UPDATE user SET passwd="'.$_POST["newpass"].'" WHERE id = "'.$_GET['id'].'" ');

/!\ Je n’ai en aucuns cas tester mon code, je l’ai fais de tête pour te donner une idée puis depuis mon tel. 

Moi je ne suivait pas les vidéos mais que les formations écrite

Hello @Didoub74,


As-tu bien suivie le tutoriel vidéo également ? 🤔

En toute logique, lorsqu'un membre à oublié son mot de passe, il clique sur "Mot de passe oublié" au formulaire, il reçoit un email de confirmation après qu'il est saisie son email et il est redirigé ensuite sur une page pour recréer un nouveau mot de passe et récupérer son compte.

Cette pub permet au site de vivre ...