TUTO PHP - MOT DE PASSE OUBLIÉ - FORMULAIRE
- Accueil
- Forum
- Programmation
- PHP
- TUTO PHP - MOT DE PASSE OUBLIÉ - FORMULAIRE
takeos Le 12 octobre 2018 à 09:52 (Édité le 25 janvier 2019 à 17:54)
J'ai suivie le tuto Mot de passe oublié mais, j'ai un soucis.
quand je tape mon email tout ce passe bien au niveau de l'envoie, donc je reçois bien email avec un code mais le formulaire rest bloqué a saisir mon email j'aimerai savoir si une personne a deja le problème et la régler svp ou @Primfx pourait tu m'expliqué doue vien ce problème s'il te plais.
Ps : J'utilise "https://fr.000webhost.com/" pour l'hébergement de mon site
Voici le code de la page recuperation :
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,login FROM membres WHERE email = ?');
$mailexist->execute(array($recup_mail));
$mailexist_count = $mailexist->rowCount();
if($mailexist_count == 1) {
$pseudo = $mailexist->fetch();
$pseudo = $pseudo['login'];
$_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 email = ?');
$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 email = ?');
$recup_insert->execute(array($recup_code,$recup_mail));
} else {
$recup_insert = $bdd->prepare('INSERT INTO recuperation(email,code,confirme) VALUES (?, ?, "0")');
$recup_insert->execute(array($recup_mail,$recup_code));
}
$header="MIME-Version: 1.0\r\n";
$header.='From:"Panzer@panpan.com"'."\n";
$header.='Content-Type:text/html; charset="utf-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';
$message = '
Récupération de mot de passe - Galaxys!
<html>
<head>
<title>Récupération de mot de passe - PANZER!!</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="#">PANZER!!</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 - Serveur 1.12 - Galaxys", $message, $header);
header('Location:../recuperation?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 email = ? 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 email = ?');
$up_req->execute(array($_SESSION['recup_mail']));
header('Location:../recuperation?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 email = ?');
$verif_confirme = $bdd->prepare('SELECT confirme FROM recuperation 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 = hash('sha256',$mdp);
$ins_mdp = $bdd->prepare('UPDATE membres SET password = ? WHERE email = ?');
$ins_mdp->execute(array($mdp,$_SESSION['recup_mail']));
$del_req = $bdd->prepare('DELETE FROM recuperation WHERE email = ?');
$del_req->execute(array($_SESSION['recup_mail']));
header('Location:../login');
} 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";
}
}
?>
Dans cette même page voici le form :
<!doctype html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Récupération de votre mot de passe</title>
<link href="../css/formulaire.css" rel="stylesheet" type="text/css" />
</head>
<body>
<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/><br/>
<form method="post">
<input type="text" placeholder="Code de vérification" name="verif_code"/><br/><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/><br/>
<input type="password" placeholder="Confirmation du mot de passe" name="change_mdpc"/><br/><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/><br/>
<input type="submit" value="Valider" name="recup_submit"/>
</form>
<?php } ?>
<?php if(isset($error)) { echo '<span style="color:red">'.$error.'</span>'; } else { echo ""; } ?>
</body>
</html>
Merci a l'avance de vos réponse.
Balatharas Le 14 octobre 2018 à 15:44 (Édité le 1 janvier 1970 à 01:00)
tu devrais remplacer:
mail($recup_mail, "Récupération de mot de passe - Serveur 1.12 - Galaxys", $message, $header);
header('Location:../recuperation?section=code');
} else {
$error = "Cette adresse mail n'est pas enregistrée";
}
parif(mail($recup_mail, "Récupération de mot de passe - Serveur 1.12 - Galaxys", $message, $header)) {
header('Location:../recuperation?section=code');
} else {
$error = "Cette adresse mail n'est pas enregistrée";
}
:) takeos Le 14 octobre 2018 à 17:05 (Édité le 1 janvier 1970 à 01:00)
je ne voit pas a quoi cela pourrait servir, je reçois correctement le mail.
le seul problème, je vous le montre :
Voici ce que je voit quand je clic sur récupérer mon mot de passe (clique ici)
L'url :
https://galaxy-s.000webhostapp.com/recuperation
et quand je confirme sa actualise la page et l'url change et devien :
https://galaxy-s.000webhostapp.com/recuperation?section=code
sauf que le formulaire, lui ne change pas
Balatharas Le 14 octobre 2018 à 18:39 (Édité le 1 janvier 1970 à 01:00)
var_dump($section);
ca te donne quoi quand l'url est https://galaxy-s.000webhostapp.com/recuperation?section=code ? takeos Le 14 octobre 2018 à 20:54 (Édité le 1 janvier 1970 à 01:00)
SkinDePewDiePie_ Le 4 novembre 2018 à 15:01 (Édité le 1 janvier 1970 à 01:00)