Confirmation par MAIL

KawasakiZ300

KawasakiZ300 Le 5 mars 2017 à 12:45 (Édité le 25 janvier 2019 à 17:53)

Bonjour tous le monde,

Voilà, j'ai suivi le TUTO de PrimFx pour la confirmation par mail sauf que j'ai un problème...
Disons que mon mail s'envoie et mon compte de s'enregistre pas dans la BDD..

Alors j'ai fais un truc, j'ai essayer de virer la confirmation par mail si sa venez de se problème et oui  c'est à cause de la confirmation par mail, car quand je m'inscris avec le codage sans la confirmation par mail, mon compte s'enregistre donc je ne trouve pas une solution au problème:

Code de confirmation par mail qui ne fonctionne pas:

<?php 
require "include/header.php";
require "include/Connexion_PDO.php"; 
?>

<?php
if(isset($_POST['forminscription'])) {
   $pseudo = htmlspecialchars($_POST['login']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   if(!empty($_POST['login']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 255) {
         if($mail == $mail2) {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
               $reqmail = $bdd->prepare("SELECT * FROM membre WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0) {
                  if($mdp == $mdp2) {
                $longueurKey = 15;
                     $key = "";
                     for($i=1;$i<$longueurKey;$i++) {
                        $key .= mt_rand(0,9);
                     }
                     $insertmbr = $bdd->prepare("INSERT INTO membre(pseudo, mail, motdepasse, confirmkey, confirm, uniqid) VALUES(?, ?, ?, ?, ?, ?)");

                     $insertmbr->execute(array($pseudo, $mail, $mdp, $key, uniqid()));

                     $header="MIME-Version: 1.0\r\n";
                     $header.='From:"CodageCSS"<expediteur@example.com>'."\n";
                     $header.='Content-Type:text/html; charset="uft-8"'."\n";
                     $header.='Content-Transfer-Encoding: 8bit';
                     $message='
                     <html>
                        <body>
                        <br>
                        <br>
                        <center><img src="http://site/images/logo.png"></center>
                           <div style="background: white; width: 500px; height: 0 auto; border-color: black; border-style: solid; padding-left: 10px;">
                           <br>
                           <br>
                              <center><a href="http://site/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte !</a></center>
                              <br>
                              <br>
                           </div>
                        </body>
                     </html>
                     ';
                     mail($mail, "Confirmation de compte", $message, $header);
                     $erreur = "Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";
                  } else {
                     $erreur = "Vos mots de passes ne correspondent pas !";
                  }
               } else {
                  $erreur = "Adresse mail déjà utilisée !";
               }
            } else {
               $erreur = "Votre adresse mail n'est pas valide !";
            }
         } else {
            $erreur = "Vos adresses mail ne correspondent pas !";
         }
      } else {
         $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
      }
   } else {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>

<title>Inscription</title>

<!--____Contenues de la page____-->
<center>
<div id="inscription">
         <h2><font color="black">Inscription</h2></font>
         <form method="POST" action="">
            <table>
               <tr>
                  <td align="right">
                     <label for="pseudo"><font color="black">Pseudo :</font></label>
                  </td>
                  <td>
                     <input type="text" placeholder="Votre pseudo" id="login" name="login" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail"><font color="black">Mail :</font></label>
                  </td>
                  <td>
                     <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" style="border-style: double; border-color: black;"/>
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail2"><font color="black">Confirmation du mail :</font></label>
                  </td>
                  <td>
                     <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp"><font color="black">Mot de passe :</font></label>
                  </td>
                  <td>
                     <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp2"><font color="black">Confirmation du mot de passe :</font></label>
                  </td>
                  <td>
                     <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td></td>
                  <td align="center">
                     <br />
                     <input type="submit" name="forminscription" value="Je m'inscris" />
                  </td>
               </tr>
            </table>
         </form>
         </div>
             <center><font color="red">Votre compte demandera une confirmation par email!</font></center>
         <?php
         if(isset($erreur)) {
            echo '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>




Maintenance celui qui fonctionne:

<?php 
require "include/header.php";
require "include/Connexion_PDO.php"; 
?>
<?php
if(isset($_POST['forminscription'])) {
   $pseudo = htmlspecialchars($_POST['login']);
   $mail = htmlspecialchars($_POST['mail']);
   $mail2 = htmlspecialchars($_POST['mail2']);
   $mdp = sha1($_POST['mdp']);
   $mdp2 = sha1($_POST['mdp2']);
   if(!empty($_POST['login']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
      $pseudolength = strlen($pseudo);
      if($pseudolength <= 255) {
         if($mail == $mail2) {
            if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
               $reqmail = $bdd->prepare("SELECT * FROM membre WHERE mail = ?");
               $reqmail->execute(array($mail));
               $mailexist = $reqmail->rowCount();
               if($mailexist == 0) {
                  if($mdp == $mdp2) {
                $longueurKey = 15;
                     $key = "";
                     for($i=1;$i<$longueurKey;$i++) {
                        $key .= mt_rand(0,9);
                     }
                     $insertmbr = $bdd->prepare("INSERT INTO membre(login, mail, motdepasse, confirmkey) VALUES(?, ?, ?, ?)");
                     $insertmbr->execute(array($pseudo, $mail, $mdp, $key));
                     $erreur = "<center>Votre compte a bien été créé ! </center><a href=\"index.php\">";
                  } else {
                     $erreur = "Vos mots de passes ne correspondent pas !";
                  }
               } else {
                  $erreur = "Adresse mail déjà utilisée !";
               }
            } else {
               $erreur = "Votre adresse mail n'est pas valide !";
            }
         } else {
            $erreur = "Vos adresses mail ne correspondent pas !";
         }
      } else {
         $erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
      }
   } else {
      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>

<title>Inscription</title>

<!--____Contenues de la page____-->
<center>
<div id="inscription">
         <h2><font color="black">Inscription</h2></font>
         <form method="POST" action="">
            <table>
               <tr>
                  <td align="right">
                     <label for="pseudo"><font color="black">Pseudo :</font></label>
                  </td>
                  <td>
                     <input type="text" placeholder="Votre pseudo" id="login" name="login" value="<?php if(isset($pseudo)) { echo $pseudo; } ?>" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail"><font color="black">Mail :</font></label>
                  </td>
                  <td>
                     <input type="email" placeholder="Votre mail" id="mail" name="mail" value="<?php if(isset($mail)) { echo $mail; } ?>" style="border-style: double; border-color: black;"/>
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mail2"><font color="black">Confirmation du mail :</font></label>
                  </td>
                  <td>
                     <input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2" value="<?php if(isset($mail2)) { echo $mail2; } ?>" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp"><font color="black">Mot de passe :</font></label>
                  </td>
                  <td>
                     <input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td align="right">
                     <label for="mdp2"><font color="black">Confirmation du mot de passe :</font></label>
                  </td>
                  <td>
                     <input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2" style="border-style: double; border-color: black;" />
                  </td>
               </tr>
               <tr>
                  <td></td>
                  <td align="center">
                     <br />
                     <input type="submit" name="forminscription" value="Je m'inscris" />
                  </td>
               </tr>
            </table>
         </form>
         </div>
             <center><font color="red">Votre compte demandera une confirmation par email!</font></center>
         <?php
         if(isset($erreur)) {
            echo '<font color="red">'.$erreur."</font>";
         }
         ?>
      </div>


Je sais d'où sa peut venir mais je ne sais pas si je peux le résoudre moi même car je débute dans le codage PHP, je pense que ça vien de ça:

$insertmbr = $bdd->prepare("INSERT INTO membre(pseudo, mail, motdepasse, confirmkey, confirm, uniqid) VALUES(?, ?, ?, ?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp, $key, uniqid()));
En Espèrent avoir une réponse, merci.
ChJacquot

ChJacquot Le 12 août 2017 à 10:01

Bonjour KawasakiZ300,
Tu n'as pas le même nombre de variables en ligne  1 qu'en ligne 2.
Changes ça, cela fonctionnera surement mieux !
Bon courage.
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte