1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
| <?php
session_start();
require_once('connexion.php');
if(isset($_GET['section'])) {
$section = htmlspecialchars($_GET['section']);
} else {
$section = "";
}
if(isset($_POST['recup_submit'],$_POST['recup_mail'])) {//Si un e-mail est présent et que "valider" est appuyé on passe ligne suivante.
if(!empty($_POST['recup_mail'])) {//Si ($_POST['recup_mail']) présent et pas vide on passe ligne suivante.
$recup_mail = htmlspecialchars($_POST['recup_mail']);
if(filter_var($recup_mail,FILTER_VALIDATE_EMAIL)) {
$mailexist = $connection->prepare('SELECT id, username FROM inscriptions WHERE mail = ?');
$mailexist->execute(array($recup_mail));//$recup_mail est le mail inscrit dans le formulaire (<input type="email") et qui doit se trouver en table inscription.
$mailexist_count = $mailexist->rowCount();//On compte les lignes correspondant à l'e-mail (1 ou 0 ligne).
if($mailexist_count == 1) {
$pseudo = $mailexist->fetch();
$pseudo = $pseudo['username'];// $pseudo est le membre demandant sont mot de passe.
//var_dump ($pseudo); //Fonction qui permet d'analyser une variable.
$_SESSION['recup_mail'] = $recup_mail; //L'e-mail est mis en session pour la demande du code.
$recup_code = "";
for($i=0; $i < 8; $i++) {
$recup_code .= mt_rand(0,9); //Le point permet d'écrire les chiffres les uns à la suite des autres.
}
//var_dump ($recup_code); //Fonction qui permet d'analyser une variable.
$mail_recup_exist = $connection->prepare('SELECT id FROM recuperation WHERE mail = ?');//Pour vérifier si l'e-mail exite dans la table.
$mail_recup_exist->execute(array($recup_mail));
$mail_recup_exist = $mail_recup_exist->rowCount();
if($mail_recup_exist == 1) {//Si $mail_recup_exist cette variable est égale à 1. On passe alors à la ligne suivante.
$recup_insert = $connection->prepare('UPDATE recuperation SET code = ? WHERE mail = ?');//Si l'e-mail existe déjà => on met à jour le code.
$recup_insert->execute(array($recup_code,$recup_mail));
} else {//Sinon on insère dans la table recuperation l'e-mail, le code de confirmation et 0 ligne suivante.
$recup_insert = $connection->prepare('INSERT INTO recuperation(mail,code,confirme) VALUES (?, ?, "0")');
$recup_insert->execute(array($recup_mail,$recup_code));
}
############ Envoi de l'e-mail ################################################################################################
$son_objet="Objet à psftxa";
$son_email=$recup_mail;
//Variable à compléter
$mon_pseudo="Admin";
$mon_email="postmaster@jeuxechecs.fr";
$msg_pour_moi="Un membre a demandé un nouveau mot de passe";
$son_objet="Envoi du code d'identification de mot de passe.";
$mon_objet="Demande d'envoi d'un code d'identification de mot de passe.";
//Mise en forme de l'accusé de réception que la personne recevra.
$accuse_pour_lui = "Bonjour $pseudo,\n
Nous avons reçu une demande de récupération de votre mot de passe envoyée avec votre adresse e-mail $recup_mail.\n
- Votre code de vérification pour le Q-C-M est : $recup_code\n
- Ceci est un email automatique, merci de ne pas y répondre. \n
Cordialement";
//Envoie du mail que recevra la personne qui souhaite un renouvellement de mot de passe.
//On prépare l'entête du message
$header="MIME-Version: 1.0\r\n";
$entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n";
$entete.='Content-Type:text/plain; charset="utf-8"'."\n";
$entete .='Content-Transfer-Encoding: 8bit';
//$entete.='Content-Type:text/html; charset="utf-8"'."\n";
//Si le mail a été envoyé
if (@mail($mon_email,$mon_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){
//On affiche un message de confirmation
$error= "<h3 style=\"text-align:center\">Votre message a été envoyé, vous recevrez une confirmation par mail.><br /><br />\n";
//Avec un lien de retour vers l'accueil du site
$error= "<a href=\"" . $mon_url . "\">Retour au login</a></h3>\n";
}
//Sinon il y a eu une erreur lors de l'envoi
else {
$error= "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
//On propose un lien de retour vers le formulaire
$error= "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n";
}
//mail($recup_mail, "Récupération de mot de passe - PANZER!!", $message, $header);
header('Location:../motdepasse/recuperation.php?section=code');
exit ();
} else {
$error = "Cette adresse mail n'est pas enregistrée";
}
} else {
$error = "Adresse mail invalide";
}
} else {
$error = "Veuillez entrer votre adresse mail";
}
}
//Le formumaire pour entrer le code s'affiche.
if(isset($_POST['verif_submit'],$_POST['verif_code'])) {//Si un le code reçu par e-mail est présent et que "valider" est appuyé on passe ligne suivante.
if(!empty($_POST['verif_code'])) {//Si ($_POST['verif_code']) présent et pas vide on passe ligne suivante.
$verif_code = htmlspecialchars($_POST['verif_code']);
$verif_req = $connection->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) { //Si le code inscrit provenant de l'e-mail est identique à celui du champ code de la table recuperation.
$up_req = $connection->prepare('UPDATE recuperation SET confirme = 1 WHERE mail = ?');//Mise à jour par 1 dans le champ confirme en correspondance avec l'e-mail.
$up_req->execute(array($_SESSION['recup_mail']));
header('Location:../motdepasse/recuperation.php?section=changemdp');
exit ();
} else {
$error = "Code invalide";
}
} else {
$error = "Veuillez entrer votre code de confirmation";
}
}
if(isset($_POST['change_submit'])) { //Pour changer le mot de passe.
if(isset($_POST['change_mdp'],$_POST['change_mdpc'])) {//Si les mots de passe sont inscrits.
$verif_confirme = $connection->prepare('SELECT confirme FROM recuperation WHERE mail = ?');//Sélectionne la champ confirme à partir de l'e-mail.
$verif_confirme->execute(array($_SESSION['recup_mail']));
$verif_confirme = $verif_confirme->fetch();
$verif_confirme = $verif_confirme['confirme'];
if($verif_confirme == 1) { //Si dans le champ confirme la valeur est égale à 1, on passe à la ligne suivante.
$mdp = htmlspecialchars($_POST['change_mdp']);
$mdpc = htmlspecialchars($_POST['change_mdpc']);
if(!empty($mdp) AND !empty($mdpc)) { //Si $mdp et $mdpc sont présents et ne sont pas vides, on passe à la ligne suivante.
if($mdp == $mdpc) {
$mdp = hash('sha256',$mdp);
$ins_mdp = $connection->prepare('UPDATE inscriptions SET Password = ? WHERE mail = ?');//On met à jour le mot de passe en correspondance avec l'e-mail.
$ins_mdp->execute(array($mdpx, $_SESSION['recup_mail']));
$del_req = $connection->prepare('DELETE FROM recuperation WHERE mail = ?');//On supprime la ligne en correspondance avec l'email dans la table recuperation.
$del_req->execute(array($_SESSION['recup_mail']));
header('Location:../_qcm/ph_qcm/index.php'); //Redirection vers la page d'accueil du Q-C-M.
} 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";
}
}
?>
<!-- Formulaires-->
<!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> |
Partager