<?php
// Ceci est générique. Il s'agit de se connecter à la base de données
$host = 'localhost';
$dbname = 'test_db';
$user = 'user';
$passwd = 'passwd';
$db = new PDO('mysql:host'.$host.';'.$dbname, $user, $passwd);
// Variable utilisé pour afficher une notification d'erreur ou de succès
$msg = '';
if (!empty($_POST)) { // Si le formulaire a été soumis if (!empty($_POST['email'])) { // Si le formulaire est correctement remplit // On fait une requête pour savoir si l'adresse e-mail est associé à un compte
$query = $db->prepare('SELECT COUNT(*) AS nb FROM users WHERE email = ?');
$query->bindValue(1, $_POST['email']);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
if (!empty($row) && $row['nb'] > 0) { // Si l'adresse courriel est associé à un compte // On génère notre token
// On insère la date et le token dans la DB
$query = $db->prepare('UPDATE users SET password_recovery_asked_date = NOW(), password_recovery_token = ? WHERE email = ?');
$query->bindValue(1, $token);
$query->bindValue(2, $email);
$query->execute();
// On prépare l'envoie du courriel
$link = 'http://www.monsite.tld/reinitialisation-mot-de-passe.php?token='.$token;
$to = $_POST['email'];
$subject = 'Réinitisalisation de votre mot de passe';
$message = '<h1>Réinitisalition de votre mot de passe</h1><p>Pour réinitialiser votre mot de passe, veuillez suivre ce lien : <a href="'.$link.'">'.$link.'</a></p>';
// On défini les entêtes requis
$header = [];
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
$headers[] = 'To: '.$to.' <'.$to.'>';
$headers[] = 'Mon site web <info@monsiteweb.tld>';
// On envoie le courriel
mail($to, $subject, $message, implode("\r\n", $headers));
$msg = '<div style="color: green;">Un courriel a été acheminé. Veuillez regarder votre boîte aux lettres et suivre les instructions à l\'intérieur du courriel.</div>';
} else { // Si elle n'est pas associé à un compte
$msg = '<div style="color: red;">Cette adresse courriel n\'a pas été trouvée dans la base de données.</div>';
}
} else { // Si le formulaire n'est pas correctement remplit
$msg = '<div style="color: red;">Veuillez spécifier une adresse courriel.</div>';
}
}
?>
<h1>Demander une réinitialisation de mot de passe</h1>
<?php echo $msg; ?>
<form action="" method="post">
<label>Votre adresse courriel : <input type="text" name="email" value="" /></label>
<button type="submit">Envoyer la demande</button>
</form>