Confirmation par MAIL
- Accueil
- Forum
- Programmation
- PHP
- Confirmation par MAIL
KawasakiZ300 Le 5 mars 2017 à 12:45 (Édité le 25 janvier 2019 à 17:53)
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 Le 12 août 2017 à 10:01 (Édité le 1 janvier 1970 à 01:00)
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.