PHP send Mail Forgot Password Example
Apr 27, 2022 . Admin

Hello dev,
Here, I will show you PHP send Mail Forgot Password Example. I would like to show you Send Reset Password Link Email PHP. you will learn PHP & MySQL. we will help you to give an example of Send Forgot password by mail or message in PHP .
This article will give you a simple example of PHP Send Reset Password Link Email. We will use the simple example of Password Reset System Using PHP.
I will give you a simple example of Forgot Password Recovery (Reset) using PHP and MySQL.
So, let's see bellow solution:
connection.php<?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "login"; $conn = new mysqli($servername,$username,$password,$dbname); if($conn->connect_error){ die ('connection faild:'.$conn->connect_error); } ?>create table
CREATE TABLE user ( fullName VARCHAR(50) NOT NULL, username VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, password VARCHAR(50) NOT NULL, resettoken VARCHAR(50) NOT NULL, resettokenexp date() NOT NULL, );index.php
<?php session_start(); require ('connection.php'); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>PHP send Mail Forgot Password Example</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <div class="container-fluid mt-3"> <div class="card" style="height:590px;"> <div class="card-header text-center"> <h3>PHP send Mail Forgot Password Example - Mywebtuts.com</h3> </div> <div class="card-body"> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <a class="navbar-brand " href="#">Aatmaninfo</a> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link" href="#">Home</a> </li> <li class="nav-item"> <a class="nav-link" href="#">about us</a> </li> <li class="nav-item"> <a class="nav-link" href="#">contect us</a> </li> </ul> </div> <form class="justify-content-end"> <?php if (isset($_SESSION['logged_in']) && $_SESSION['logged_in']==TRUE) { echo $_SESSION['email']." - <a href='logout.php' class='btn btn-danger'>LOGOUT</a>"; }else{ echo "<button type='button' class='btn btn-success m-1' data-bs-toggle ='modal' data-bs-target='#loginModal'>Login</button> <button type='button' class='btn btn-danger m-1' data-bs-toggle='modal' data-bs-target='#RegisterModal'>Register</button>"; } ?> </form> </nav> <?php if (isset($_SESSION['logged_in']) && $_SESSION['logged_in']==TRUE) { echo "<h1 class='text-center mt-5 pt-5'>Welcom to this website</h1>"; } ?> </div> </div> <div class="modal fade" id="loginModal"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h3 class="modal-title" id="loginModalLabel">Login</h3> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <form action="registration.php" method="post"> <div class="modal-body"> <div class="mb-3"> <label>Email : </label> <input type="text" name="email_username" class="form-control" placeholder="Email"> </div> <div class="mb-3"> <label>Password : </label> <input type="password" name="password" class="form-control" placeholder="Password"> </div> <div class="text-end"> <a href="forgotPassword.php" class='btn m-1 text-primary' style="background:transparent;">Forgot Password ?</a> </div> <hr class="mt-0"> <div class="text-center"> <input type="submit" name="login" value="Login" class="btn btn-primary"> </div> </div> </form> </div> </div> </div> <div class="modal fade" id="RegisterModal"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h3 class="modal-title" id="RegisterModalLabel">Register</h3> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <form action="registration.php" method="post"> <div class="modal-body"> <div class="mb-3"> <label>Full Name : </label> <input type="text" name="fullName" class="form-control" placeholder="Full Name"> </div> <div class="mb-3"> <label>User Name : </label> <input type="text" name="username" class="form-control" placeholder="User Name"> </div> <div class="mb-3"> <label>Email : </label> <input type="email" name="email" class="form-control" placeholder="Email"> </div> <div class="mb-3"> <label>Password : </label> <input type="password" name="password" class="form-control" placeholder="Password"> </div> </div> <div class="modal-footer"> <input type="submit" name="register" value="Register" class="btn btn-primary"> <button type="button" class="btn btn-danger" data-bs-dismiss="modal">Close</button> </div> </form> </div> </div> </div> </div> </body> </html>forgotPassword.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Forgot password</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <div class="container d-flex justify-content-center mt-5 pt-5"> <div class="card mt-5" style="width:500px"> <div class="card-header"> <h1 class="text-center">Forgot Password</h1> </div> <div class="card-body"> <form action="registration.php" method="post"> <div class="mt-4"> <label for="email">Email : </label> <input type="email" name="email" class="form-control" placeholder="Enter Email"> </div> <div class="mt-4 text-end"> <input type="submit" name="send-link" class="btn btn-primary"> <a href="index.php" class="btn btn-danger">Back</a> </div> </form> </div> </div> </div> </body> </html>NOTE
This is required; first of all open this link - PHPMailer Download this file and used in cod.
registration.php<?php require ('connection.php'); session_start(); use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; function sendmail($email,$reset_token){ require ('PHPMailer-master/src/PHPMailer.php'); require ('PHPMailer-master/src/Exception.php'); require ('PHPMailer-master/src/SMTP.php'); $mail = new PHPMailer(true); try { $mail->isSMTP(); $mail->Host = 'smtp.gmail.com'; $mail->SMTPAuth = true; $mail->Username = 'your email'; $mail->Password = 'your password'; $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; $mail->setFrom('your email'); $mail->addAddress($email); $mail->isHTML(true); $mail->Subject = 'Password Reset link form Aatmaninfo'; $mail->Body = "we got a request form you to reset Password! <br>Click the link bellow: <br> <a href='http://localhost:8000/updatePassword.php?email=$email&reset_token=$reset_token'>reset password</a>"; $mail->send(); return true; } catch (Exception $e) { return false; } } if (isset($_POST['login'])) { $email_username =$_POST['email_username']; $password_login =$_POST['password']; $sql="SELECT * FROM users WHERE email = '$email_username' AND password = '$password_login'"; $result = $conn->query($sql); if ($row = $result->fetch_assoc()) { $_SESSION['logged_in']=TRUE; $_SESSION['email']=$row['email']; header('location:index.php'); }elseif($row['email'] === $email_username){ echo " <script> alert('register your email'); window.location.href='index.php' </script>"; }else{ echo " <script> alert('Enter valid password'); window.location.href='index.php' </script>"; } } if (isset($_POST['register'])) { $fullName =$_POST['fullName']; $username =$_POST['username']; $email =$_POST['email']; $password =$_POST['password']; $user_exist_query="SELECT * FROM users WHERE email = '$email' "; $result = $conn->query($user_exist_query); if ($result) { if ($result->num_rows > 0) { $row = $result->fetch_assoc(); if ($row['email'] === $email) { echo " <script> alert('Email Address Already Exists!'); window.location.href='index.php' </script>"; } }else{ $query ="INSERT INTO `users`(`fullName`, `username`, `email`, `password`) VALUES ('$fullName','$username','$email','$password')"; if ($conn->query($query)===TRUE) { echo " <script> alert('Registration Successful.'); window.location.href='index.php' </script>"; }else{ echo " <script> alert('something got wrong !!'); window.location.href='index.php' </script>"; } } }else{ echo " <script> alert('query can not run'); window.location.href='index.php' </script>"; } } if (isset($_POST['send-link'])) { $email = $_POST['email']; $sql="SELECT * FROM users WHERE email = '$email'"; $result = $conn->query($sql); if ($result) { if ($row = $result->fetch_assoc()) { $reset_token=bin2hex(random_bytes(16)); date_default_timezone_set('Asia/kolkata'); $date = date("Y-m-d"); $sql = "UPDATE users SET resettoken ='$reset_token', resettokenexp = '$date' WHERE email = '$email'"; if (($conn->query($sql)===TRUE) && sendmail($email,$reset_token )===TRUE) { echo " <script> alert('Password reset link send to mail.'); window.location.href='index.php' </script>"; }else{ echo " <script> alert('Something got Wrong'); window.location.href='forgotPassword.php' </script>"; } }else{ echo " <script> alert('Email Address Not Found'); window.location.href='forgotPassword.php' </script>"; } }else{ echo " <script> alert('Server Down'); window.location.href='forgotPassword.php' </script>"; } } ?>updatePassword.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Upadte Password</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <?php require ('connection.php'); if (isset($_GET['email']) && isset($_GET['reset_token'])) { date_default_timezone_set('Asia/kolkata'); $date = date("Y-m-d"); $email = $_GET['email']; $reset_token = $_GET['reset_token']; $sql="SELECT * FROM users WHERE email = '$email' AND resettoken = '$reset_token' AND resettokenexp = '$date'"; $result = $conn->query($sql); if ($result) { if ($result->num_rows == 1) { echo ' <div class="container d-flex justify-content-center mt-5 pt-5"> <div class="card mt-5" style="width:500px"> <div class="card-header"> <h1 class="text-center">Creat New Password</h1> </div> <div class="card-body"> <form method="post"> <div class="mt-2"> <label for="Password">Password : </label> <input type="password" name="Password" class="form-control" placeholder="Creat New Password"> <input type="hidden" name="email" class="form-control" value='.$email.'> </div> <div class="mt-4 text-end"> <input type="submit" name="update" value="update" class="btn btn-primary"> <a href="index.php" class="btn btn-danger">Back</a> </div> </form> </div> </div> </div>'; }else{ echo " <script> alert('invelid or Expired link'); window.location.href='index.php' </script>"; } } }else{ echo " <script> alert('server down!!'); window.location.href='index.php' </script>"; } if (isset($_POST['update'])) { $pass = $_POST['Password']; echo $pass; $email = $_POST['email']; echo $email; $update = "UPDATE users SET password='$pass',resettoken='NULL',resettokenexp=NULL WHERE email = '$email'"; if ($conn->query($update)===TRUE) { echo " <script> alert('New Password Created Successfully'); window.location.href='index.php' </script>"; }else{ echo "Error: ".$sql."<br>".$conn->error; echo " <script> alert('Password not updated'); window.location.href='index.php' </script>"; } } ?> </body> </html>logout.php
<?php session_start(); session_unset(); session_destroy(); header("location:index.php"); ?>Output: Registration Page

Login page
.png)
Forgot password page


Creat New password page

Home page
.png)
It will help you...