[Page Mot de passe oublié?]

pseudo01

pseudo01 Le 5 mai 2020 à 14:54

Bonjour, je suis une débutante en PHP. Je suis entrain de créer une page "mot de passe oublié" que j'ai trouvé sur ce site méme. Mais le problème c'est que quand je donne une adresse mail pour récupérer le mot de passe on m'affiche que le code de récupération a été envoyé alors que je ne reçoi rien du tout (sachant qu'il n'y a pas d'erreurs). J'ai méme essayé le code d'un membre ici qui disait que c'est fonctionnel et que d'autres l'ont essayé aussi et il marche pour eux. Mais pour moi rien à faire je n'arrive toujours pas à trouver c'est quoi le problème.

Merci d'avance pour votre aide.

Note 1:Je c'est que je l'ai mentionné au début mais j'insiste sur le fait que je ne suis qu'une débutante.

Note 2:Désolé pour la mise en page mais puisque le code ne marche toujours pas je ne l'est pas encore faite.

Voici mon code PHP:

<?php
session_start();

require_once"register.php"; /* connexion dans ce fichier */
 $hote="localhost";
  $db="we_learn";
  $login="root";
  $mdp="";

 try{
    $db = new PDO ("mysql:host=$hote;dbname=$db",$login,$mdp);
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 } catch (Exeption $e){
    die("\n Connexion à '$hote' impossible : ".$e->getMessage());
 }

if(isset($_GET['section'])) {
    $section = htmlspecialchars($_GET['section']);
} else {
    $section = "";
}
if(isset($_POST['recup_submit'],$_POST['recup_mail'])) {
    if(!empty($_POST['recup_mail'])) {
        $recup_mail = htmlspecialchars($_POST['recup_mail']);
        if(filter_var($recup_mail,FILTER_VALIDATE_EMAIL)) {
            $mailexist = $db->prepare('SELECT id_et,Prenom FROM etudiant WHERE email = ?');
            $mailexist->execute(array($recup_mail));
            $mailexist_count = $mailexist->rowCount();
            if($mailexist_count == 1) {
                $pseudo = $mailexist->fetch();
                $pseudo = $pseudo['Prenom'];
                $_SESSION['recup_mail'] = $recup_mail;
                $recup_code = "";
                for($i=0; $i < 8; $i++) {
                    $recup_code .= mt_rand(0,9);
                }
                $mail_recup_exist = $db->prepare('SELECT id FROM forget WHERE email = ?');
                $mail_recup_exist->execute(array($recup_mail));
                $mail_recup_exist = $mail_recup_exist->rowCount();
                if($mail_recup_exist == 1) {
                    $recup_insert = $db->prepare('UPDATE forget SET code = ? WHERE email = ?');
                    $recup_insert->execute(array($recup_code,$recup_mail));
                } else {
                    $recup_insert = $db->prepare('INSERT INTO forget(mail,code) VALUES (?, ?)');
                    $recup_insert->execute(array($recup_mail,$recup_code));
                }
                $header="MIME-Version: 1.0\r\n";
                $header.='From:"WE LEARN"<a.assad@mundiapolis.ma>'."\n";
                $header.='Content-Type:text/html; charset="utf-8"'."\n";
                $header.='Content-Transfer-Encoding: 8bit';
                $message = '
         <html>
         <head>
           <title>Récupération de mot de passe - WE LEARN</title>
           <meta charset="utf-8" />
         </head>
         <body>
           <font color="#303030";>
             <div align="center">
               <table width="600px">
                 <tr>
                   <td>
                     <div align="center">Bonjour <b>'.$pseudo.'</b>,</div>
                     Voici votre code de récupération: <b>'.$recup_code.'</b>
                     A bientôt sur <a href="http://localhost/learn%20w/inscription.php"> ici</a> 
                   </td>
                 </tr>
                 <tr>
                   <td align="center">
                     <font size="2">
                       Ceci est un email automatique, merci de ne pas y répondre!
                     </font>
                   </td>
                 </tr>
               </table>
             </div>
           </font>
         </body>
         </html>
         ';
                mail($recup_mail, "Récupération de mot de passe - WE LEARN", $message, $header);
                header("Location: oublie.php?section=code");
            } else {
                $error = "Cette adresse mail n'est pas enregistrée";
            }
        } else {
            $error = "Adresse mail invalide";
        }
    } else {
        $error = "Veuillez entrer votre adresse mail";
    }
}
if(isset($_POST['verif_submit'],$_POST['verif_code'])) {
    if(!empty($_POST['verif_code'])) {
        $verif_code = htmlspecialchars($_POST['verif_code']);
        $verif_req = $db->prepare('SELECT id FROM forget WHERE email = ? AND code = ?');
        $verif_req->execute(array($_SESSION['recup_mail'],$verif_code));
        $verif_req = $verif_req->rowCount();
        if($verif_req == 1) {
            $up_req = $db->prepare('UPDATE forget SET confirme = 1 WHERE email = ?');
            $up_req->execute(array($_SESSION['recup_mail']));
            header('Location: oublie.php?section=changemdp');
        } else {
            $error = "Code invalide";
        }
    } else {
        $error = "Veuillez entrer votre code de confirmation";
    }
}
if(isset($_POST['change_submit'])) {
    if(isset($_POST['change_mdp'],$_POST['change_mdpc'])) {
        $verif_confirme = $db->prepare('SELECT confirme FROM forget WHERE email = ?');
        $verif_confirme->execute(array($_SESSION['recup_mail']));
        $verif_confirme = $verif_confirme->fetch();
        $verif_confirme = $verif_confirme['confirme'];
        if($verif_confirme == 1) {
            $mdp = htmlspecialchars($_POST['change_mdp']);
            $mdpc = htmlspecialchars($_POST['change_mdpc']);
            if(!empty($mdp) AND !empty($mdpc)) {
                if($mdp == $mdpc) {
                    $mdp = sha1($mdp);
                    $ins_mdp = $db->prepare('UPDATE etudiant SET mot_d_passe = ? WHERE email = ?');
                    $ins_mdp->execute(array($mdp,$_SESSION['recup_mail']));
                    $del_req = $db->prepare('DELETE FROM forget WHERE email = ?');
                    $del_req->execute(array($_SESSION['recup_mail']));
                    header('Location:http://localhost/learn%20w/login.php');
                } else {
                    $error = "Vos mots de passes ne correspondent pas";
                }
            } else {
                $error = "Veuillez remplir tous les champs";
            }
        } else {
            $error = "Veuillez valider votre mail grâce au code de vérification qui vous a été envoyé par mail";
        }
    } else {
        $error = "Veuillez remplir tous les champs";
    }
}
?>

   </br>
    </br></br>
    </br></br>
    </br>

<fieldset id="s">
<legend><h3> Mot de passe oublié:</h3></legend>
              <h4 class="title-element">Récupération de mot de passe</h4>
<?php if(isset($_GET['section']) && $_GET['section'] == 'code') { ; ?>
    Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail'] ?>
    <br/>
    <form method="post">
        <input type="text" placeholder="Code de vérification" name="verif_code"/><br/>
        <input type="submit" value="Valider" name="verif_submit"/>
    </form>
<?php } elseif(isset($_GET['section']) && $_GET['section'] == "changemdp"){ ?>
    Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?>
    <form method="post">
        <input type="password" placeholder="Nouveau mot de passe" name="change_mdp"/><br/>
        <input type="password" placeholder="Confirmation du mot de passe" name="change_mdpc"/><br/>
        <input type="submit" value="Valider" name="change_submit"/>
    </form>
<?php } else { ?>
    <form method="post">
        <input type="email" placeholder="Votre adresse mail" name="recup_mail"/><br/>
        <input type="submit" value="Valider" name="recup_submit"/>
    </form>
<?php } ?>
<?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } else { echo ""; } ?>

    </br></br>
    </br></br>
    </br>

</fieldset>
LeMal

LeMal Le 18 mai 2020 à 22:16

Inscris-toi sur www.sitedudev.com c'est mieux que PrimFX

Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte