/
forgot.php
135 lines (106 loc) · 4.21 KB
/
forgot.php
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
<?php
// https://github.com/PHPMailer/PHPMailer#a-simple-example
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require './vendor/autoload.php';
require './classes/config.php';
?>
<?php
include "includes/db.php";
include "includes/header.php";
include "includes/main_functions.php";
?>
<!-- Navigation -->
<?php include "includes/navigation.php"; ?>
<?php
if (!IsItMethod('get') && !isset($_GET['id'])) {
redirect ('index');
}
?>
<?php
if (IsItMethod('post')) {
if (isset($_POST['email'])) {
$email = $_POST['email'];
$length = 50;
$token = bin2hex(openssl_random_pseudo_bytes($length));
if (field_exists ($email, 'user_email')) {
$query = "UPDATE users SET token='{$token}' WHERE user_email = ? ";
if ($stmt = $connection->prepare ($query)) {
$stmt->bind_param ("s", $email);
$stmt->execute();
/*
* configure phpmailer
* https://github.com/PHPMailer/PHPMailer#a-simple-example
*/
$mail = new PHPMailer(true); // Passing `true` enables exceptions
try {
//Server settings
$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = Config::SMTP_HOST; // Specify main and backup SMTP servers
$mail->Username = Config::SMTP_USER; // SMTP username
$mail->Password = Config::SMTP_PASSWORD; // SMTP password
$mail->Port = Config::SMTP_PORT; // TCP port to connect to
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->CharSet = 'UTF-8';
//Recipients
$mail->setFrom('ljwjulian@gmail.com', 'Admin');
$mail->addAddress($email); // Name is optional
//Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'Here is the subject';
//$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->Body = "<p><a href='{$_SERVER['DOCUMENT_ROOT']}/{$home_url}reset.php?email={$email}&token={$token}'>
Please click reset your password.</a></p>";
if ($mail->send()) {
$emailSent = true;
}
} catch (Exception $e) {
echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;
}
} else {
echo "Something's gone wrong.";
}
}
}
}
?>
<!-- Page Content -->
<div class="container">
<div class="form-gap"></div>
<div class="container">
<div class="row">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-default">
<div class="panel-body">
<div class="text-center">
<h3><i class="fa fa-lock fa-4x"></i></h3>
<h2 class="text-center">Forgot Password?</h2>
<p>You can reset your password here.</p>
<?php if (!isset($emailSent)): ?>
<div class="panel-body">
<form id="register-form" role="form" autocomplete="off" class="form" method="post">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><i class="glyphicon glyphicon-envelope color-blue"></i></span>
<input id="email" name="email" placeholder="email address" class="form-control" type="email">
</div>
</div>
<div class="form-group">
<input name="recover-submit" class="btn btn-lg btn-primary btn-block" value="Reset Password" type="submit">
</div>
<input type="hidden" class="hide" name="token" id="token" value="">
</form>
</div><!-- /.panel-body -->
<?php else: ?>
<div class='alert alert-success'> Mail has been sent. Please check your email.</div>
<?php endIf; ?>
</div>
</div><!-- /.panel-body -->
</div>
</div>
</div>
</div>
<hr>
<?php include "includes/footer.php";?>
</div> <!-- /.container -->