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/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>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/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");
?>
Post Views: 359