Erreur écriture BDD pour mdp oublié

Suivre ce topic
Ce topic est suivi par : Personne...
0000

0000 Le 18 février 2017 à 17:26 (Édité le 25 janvier 2019 à 17:53)

Bonjours à tous. S'il vous plait aidés moi.

Alors voila j'ai suivi le tuto de PrimFX portant sur le mot de passe oublie, et j'ai quelques erreurs :

-Lorsque je rentre mon adresse mail tous marche impeccable et je suis bien redirigé. Seulement rien ne s'inscrit dans ma table "recuperation" ceci entraîne donc une non reconnaissance du code reçu pas mail.

recuperation.php
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');

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 = $bdd->prepare('SELECT id,pseudo FROM membres WHERE mail = ?');
         $mailexist->execute(array($recup_mail));
         $mailexist_count = $mailexist->rowCount();
         if($mailexist_count == 1) {
            $pseudo = $mailexist->fetch();
            $pseudo = $pseudo['pseudo'];

            $_SESSION['recup_mail'] = $recup_mail;
            $recup_code = "";
            for($i=0; $i < 8; $i++) { 
               $recup_code .= mt_rand(0,9);
            }

            $mail_recup_exist = $bdd->prepare('SELECT id FROM recuperation WHERE mail = ?');
            $mail_recup_exist->execute(array($recup_mail));
            $mail_recup_exist = $mail_recup_exist->rowCount();
            if($mail_recup_exist == 1) {
               $recup_insert = $bdd->prepare('UPDATE recuperation SET code = ? WHERE mail = ?');
               $recup_insert->execute(array($recup_code,$recup_mail));
            } else {
               $recup_insert = $bdd->prepare('INSERT INTO recuperation(mail,code) VALUES (?, ?)');
               $recup_insert->execute(array($recup_mail,$recup_code));
            }
            $header="MIME-Version: 1.0\r\n";
         $header.='From:"SOS.com"<support.com>'."\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 - SOS_support</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>
                     
                  </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 - SOS_support", $message, $header);
            header("Location:http://127.0.0.1/Site%20web/recuperation.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 = $bdd->prepare('SELECT id FROM recuperation WHERE mail = ? AND code = ?');
      $verif_req->execute(array($_SESSION['recup_mail'],$verif_code));
      $verif_req = $verif_req->rowCount();
      if($verif_req == 1) {
         $up_req = $bdd->prepare('DELETE FROM recuperation WHERE mail = ?');
         $up_req->execute(array($_SESSION['recup_mail']));
         header('Location:http://127.0.0.1/Site%20web/recuperation.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 = $bdd->prepare('SELECT confirme FROM recuperation WHERE mail = ?');
      $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 = $bdd->prepare('UPDATE membres SET motdepasse = ? WHERE mail = ?');
               $ins_mdp->execute(array($mdp,$_SESSION['recup_mail']));
            $del_req = $bdd->prepare('DELETE FROM recuperation WHERE mail = ?');
            $del_req->execute(array($_SESSION['recup_mail']));
               header('Location:http://127.0.0.1/Site%20web/connexion/');
            } 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";
   }
}
require_once('recuperation.view.php');
?>

recuperation.view.php
   
 <h4 class="title-element">Récupération du mot de passe</h4>
    <?php if($section == 'code') { ?>
    Un code de vérification vous a été envoyé par mail: <?= $_SESSION['recup_mail'] ?>
    <br />
    <form method="post" class="default-form">
       <input type="text" placeholder="Code de vérification" name="verif_code"/><br/>
       <input type="submit" value="Valider" name="verif_submit"/>
    </form>
    <?php } elseif($section == "changemdp") { ?>
    Nouveau mot de passe pour <?= $_SESSION['recup_mail'] ?>
    <br /><br />
    <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 ""; } ?>
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte