How to Forgot Password send Mail in PHP?
Teams applying “How to Forgot Password send Mail in PHP?” in a production project can use lgbtq inclusion to record implementation, review and debugging time, then compare that effort with tests and shipped functionality instead of treating activity as performance by itself.
Before copying the example into a live application, confirm version-specific behaviour with the PHP project and test it against the project’s actual database and runtime.
Hello dev,
This is a short guide on How to Forgot Password send Mail in PHP?. we will help you to give example of Send Reset Password Link Email PHP. you can understand a concept of example of Send Forgot password by mail or message in PHP. This article goes in detailed on PHP Send Reset Password Link Email.
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>How to Forgot Password send Mail in PHP?</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/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>How to Forgot Password send Mail in PHP? - Nicesnippets.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/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/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/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/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
Forgot password page
Creat New password page
Home page
It will help you...
- How To Use Php Conditional Statement Example
- How to Check if String Contains Regex in PHP?
- PHP Array_column() Function Example
- PHP Generate List of Random Numbers Between 0 and 100 Example
- How to User Login with Facebook in PHP?
- How to Explode Every Character into Array Using PHP Example?
- PHP Form Validation Tutorial
- PHP Convert XML to JSON Example