php-login-y-registro-ejemplo/recuperar_contrasenya.php

100 lines
3.4 KiB
PHP
Raw Permalink Normal View History

2019-08-06 16:13:05 +02:00
<?php
// Import PHPMailer classes into the global namespace
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
//-----------------------------------------------------
// Imports
//-----------------------------------------------------
require_once('DB.php');
//-----------------------------------------------------
// Variables
//-----------------------------------------------------
$miDB = new DB();
$email = isset($_REQUEST['email']) ? $_REQUEST['email'] : null;
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Generamos el token
$token = bin2hex(openssl_random_pseudo_bytes(16));
// Guardamos el token
$miDB->actualizarToken($email, $token);
// Solamente enviamos el email si existe el correo
if($miDB->comprobarExisteCorreo($email)) {
//-----------------------------------------------------
// Enviar email
//-----------------------------------------------------
// Nuestro mensaje debe ser HTML
$mensaje = "
<html>
<head>
<title>Cambiar contraseña</title>
</head>
<body>
<p>¿Qué tal? Pulsa el siguiente enlace para cambiar tu contraseña</p>
<p>
<a href=\"http://localhost:9000/cambiar_contrasenya.php?token=$token&email=" . urlencode($email) . "\">Cambiar</a>
</p>
</body>
</html>
";
// Load Composer's autoloader
require 'vendor/autoload.php';
// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = 0; // Enable verbose debug output
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'localhost'; // Specify main and backup SMTP servers
$mail->SMTPAuth = false; // Enable SMTP authentication
$mail->Username = ''; // SMTP username
$mail->Password = ''; // SMTP password
$mail->Port = 1025; // TCP port to connect to
$mail->CharSet = 'UTF-8';
//Recipients
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress($email); // Add a recipient
// Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Cambiar contraseña';
$mail->Body = $mensaje;
$mail->send();
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Recuperar contrasenya</title>
</head>
<body>
<h1>Recupera tu contraseña</h1>
<h2>Te enviamos las instrucciones por email</h2>
<form action="" method="post">
<label>
Tu email
<input type="text" name="email">
</label>
<input type="submit" value="Recuperar">
</form>
<p>
<a href="/">Volver</a>
</p>
</body>
</html>