-
Notifications
You must be signed in to change notification settings - Fork 1
/
forgot.php
160 lines (106 loc) · 5.83 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
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
<?php require_once('includes/header.php'); ?>
<!-- Navigation -->
<?php require_once('includes/nav.php'); ?>
<?php
if(!isset($_GET['token'])) {
header("Location: /php-cms/login");
exit();
}
if(isset($_SESSION['user_role'])) {
header("Location: /php-cms/");
exit();
}
if(isMethod("post")) {
if(isset($_POST['email'])) {
$email = $_POST['email'];
$length = 50;
$token = bin2hex(openssl_random_pseudo_bytes($length));
if(userDetailDuplicate("email", $email)) {
$token_stmt = mysqli_prepare($connection, "UPDATE tblusers SET token = '{$token}' WHERE email = ?");
checkPreparedStatement($token_stmt);
mysqli_stmt_bind_param($token_stmt, "s", $email);
mysqli_stmt_execute($token_stmt);
mysqli_stmt_close($token_stmt);
//Configure PHPMailer
require_once('vendor/phpmailer/phpmailer/src/Exception.php');
require_once('vendor/phpmailer/phpmailer/src/PHPMailer.php');
require_once('vendor/phpmailer/phpmailer/src/SMTP.php');
require_once('/classes/Config.php');
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->isSMTP();
$mail->Host = Config::SMTP_HOST;
$mail->Username = Config::SMTP_USER;
$mail->Password = Config::SMTP_PASSWORD;
$mail->Port = Config::SMTP_PORT;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->setFrom('[email protected]', 'Mark Ian Pamintuan');
$mail->addAddress($email);
$mail->isHTML(true);
$mail->CharSet = 'utf-8';
$mail->Subject = 'Password Reset';
$mail->Body = "<p>Click the link the reset your password <a href='http://localhost/php-cms/reset.php?email={$email}&token={$token}'>here</a> </p>";
if($mail->send()) {
$message = 'Sent';
} else {
$message = 'Failed';
}
} else {
$message = 'Unregistered';
}
}
}
?>
<!-- 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($message)) {
if($message == 'Sent') {
echo "<div class='alert alert-success alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden=true'>×</span></button>
Message has been sent! You can check your email.</div>";
exit();
} elseif($message == 'Failed') {
echo "<div class='alert alert-danger alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden=true'>×</span></button>
Message could not be sent. Mailer Error: {$mail->ErrorInfo}</div>";
} elseif($message == 'Unregistered') {
echo "<div class='alert alert-warning alert-dismissible' role='alert'>
<button type='button' class='close' data-dismiss='alert' aria-label='Close'><span aria-hidden=true'>×</span></button>
Your email is not yet registered within our system.</div>";
}
}
?>
<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" required>
</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><!-- Body-->
</div>
</div>
</div>
</div>
</div>
</div>
<hr>
<?php require_once('includes/footer.php');?>
</div> <!-- /.container -->