PHP Signup with OTP Email Verification System - Forgot Password (Part 7)



Forgot Password:

In this tutorial, I will create a forgot password PHP function in order to password nor remember you can reset it by getting an email reset link.

Step 1:
 
Create a forgot_password.php file and paste the below code.

HTML Code:

<!DOCTYPE html>
<html lang="en">

  <head>
  <!-- Meta Tags -->
<meta charset="UTF-8">
<meta name="author" content="Kamran Mubarik">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Site Title -->
  <title>PHP Signup with OTP Email Verification System</title>
  <!-- External Style Sheet -->
<link rel="stylesheet" type="text/css" href="css/style.css" />

  </head>
<body>
<div class="wrapper">
<div class="otp">
<h2>Forgot Password</h2>
<hr>
<form action="" method="POST">
<div class="form-group">
<label>Registered Email</label>
<input type="email" name="email" placeholder="Enter your registered email" autocomplete="off">
</div>
<div class="form-group">
<label></label>
<input type="submit" name="resetLink" value="Submit">
</div>
</form>
</div>
</div>
<!-- End of Login Wrapper -->
</body>

<script type="text/javascript" src="js/jquery.min.3-4-1.js"></script>

</html>


PHP Code:

  • Don't forget to use your SMTP detail
<?php 
include "config.php";

$basename = basename($_SERVER['HTTP_REFERER']);
$basname_replace = str_replace($basename, "reset_password.php", $_SERVER['HTTP_REFERER']);

$str_code = rand(100000, 10000000);
$reset_code = str_shuffle("abcdefghijklmnopqrstuvwxyz".$str_code);

$url = $basname_replace."?resetLink=".$reset_code;

if (isset($_POST['resetLink'])) {
$email = mysqli_real_escape_string($conn, $_POST['email']);

$sqlSelect = "SELECT * FROM user WHERE email = '".$email."' AND status = 'active'";
$resultSelect = mysqli_query($conn, $sqlSelect);
if (mysqli_num_rows($resultSelect) > 0) {
require 'class/class.phpmailer.php';
$mail = new PHPMailer;
$mail->IsSMTP();
$mail->Host = '';
$mail->Port = '587';
$mail->SMTPAuth = true;
$mail->Username = 'apikey';
$mail->Password = '';
$mail->SMTPSecure = 'TLS';
$mail->From = '';
$mail->FromName = 'Reset Password Link';
$mail->AddAddress($email);
$mail->WordWrap = 50;
$mail->IsHTML(true);
$mail->Subject = 'Reset Password Link';

$message_body = '
<p>For reset password, please click to given link: <b>'.$url.'</b>.</p>
<p>Sincerely,</p>
';
$mail->Body = $message_body;

if($mail->Send())
{
$sqlUpdate = "UPDATE user SET reset_code = '".$reset_code."' WHERE email = '".$email."'";
$resultUpdate = mysqli_query($conn, $sqlUpdate);
if ($resultUpdate) {
echo '<script>alert("Please Check Your Email for reset password")</script>';
header('Refresh:1; url=index.php');
}
else{
echo "<script>alert('opss something wrong...');</script>";
}
}
else
{
$message = $mail->ErrorInfo;
echo '<script>alert("'.$message.'")</script>';
}
}
else{
echo "<script>alert('No account found...');</script>";
}
}

?>

Step 2:
 
Create a reset_password.php file and paste the below code.

HTML Code:

<!DOCTYPE html>
<html lang="en">

  <head>
  <!-- Meta Tags -->
<meta charset="UTF-8">
<meta name="author" content="Kamran Mubarik">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Site Title -->
  <title>PHP Signup with OTP Email Verification System</title>
  <!-- External Style Sheet -->
<link rel="stylesheet" type="text/css" href="css/style.css" />

  </head>
<body>
<div class="wrapper">
<div class="otp">
<h2>Reset Password</h2>
<hr>
<form action="" method="POST">
<div class="form-group">
<label>New Password</label>
<input type="password" name="password" placeholder="Enter new password" autocomplete="off">
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" name="confirmPassword" placeholder="Enter confirm password" autocomplete="off">
</div>
<div class="form-group">
<label></label>
<input type="submit" name="resetPassword" value="Reset Password">
</div>
</form>
</div>
</div>
<!-- End of Login Wrapper -->
</body>

<script type="text/javascript" src="js/jquery.min.3-4-1.js"></script>

</html>


PHP Code:

<?php 
include "config.php";

if (isset($_POST['resetPassword'])) {
$password = mysqli_real_escape_string($conn, $_POST['password']);
$confirmPassword = mysqli_real_escape_string($conn, $_POST['confirmPassword']);

if ($password !== $confirmPassword) {
echo "<script>alert('Password not matched...');</script>";
}
else{
if (isset($_GET['resetLink'])) {
$sqlSelect = "SELECT * FROM user WHERE reset_code = '".$_GET['resetLink']."'";
$resultSelect = mysqli_query($conn, $sqlSelect);
if (mysqli_num_rows($resultSelect) > 0) {

$sqlUpdate = "UPDATE user SET password = '".md5($password)."' WHERE reset_code = '".$_GET['resetLink']."'";
$resultUpdate = mysqli_query($conn, $sqlUpdate);
if ($resultUpdate) {

echo '<script>alert("Password update successfuly")</script>';
header('Refresh:1; url=index.php');
}
else{
echo '<script>alert("Opss something wrong")</script>';
}
}
else{
echo '<script>alert("Wrong url")</script>';
}
}
}
}
?>

2 Comments

Post a Comment

Post a Comment

Previous Post Next Post