recupération mot de passe
- Accueil
- Forum
- Programmation
- PHP
- recupération mot de passe
bilaldu60 Le 15 septembre 2019 à 19:04 (Édité le 16 septembre 2019 à 21:36)
j'ai bien suivi le tuto et j ai en prerequis fais :
création espace membre
envoyer des mails en php
En ce qui concerne le tuto "recupération mot de passe" cela m'envoye bien un code de recuperation par mail et cela ecrit bien dans ma table "recuperation".
apres l envoi du mail de recuperation je reviens dans le formulaire ou il faut entrer son adresse mail et non pas dans la section code ou je devrai normalement entrer mon code pour réinitialiser mon mot de passe.
Si quelqu'un a une piste ,je suis preneur.
D'avance merci
bilaldu60 Le 16 septembre 2019 à 19:54 (Édité le 16 septembre 2019 à 19:56)
<?php
session_start();
$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'nom_d_utilisateur', 'code_mysql');
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:"PrimFX.com"<expediteur@example.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 - PrimFX.com</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://primfx.com/">PrimFX.com</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 - PrimFX.com", $message, $header);
header('Location:/monsite/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('UPDATE recuperation SET confirme = 1 WHERE mail = ?');
$up_req->execute(array($_SESSION['recup_mail']));
header('Location:/monsite/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:/monsite/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";
}
}
?>
<html>
<h4 class="title-element">Récupération de 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">
<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'] ?>
<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 ""; } ?>
</html>
bilaldu60 Le 16 septembre 2019 à 21:33 (Édité le 1 janvier 1970 à 01:00)
j'ai juste ajouter aprés : session_start();
if(isset($_GET['section'])) {
$section = htmlspecialchars($_GET['section']);
} else {
$section = "";
}
C’était écrit dans les commentaires juste aprés le tuto.
Encore merci à prime fx