Hi Team
I have a logic to send an email but i did not hard coded to send an email for users to get an otp. Rather it uses $_POST['email'], but now the logic is not quite close working and need some help to resolve this. Let me share my logic for do this, maybe i am missing some few steps.
// jquery code
$(document).ready(function(){
$("#forgot-password").submit(function(event){
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
url: "forgot-password.php",
type: "POST",
data: formData,
success: function(data){
if(data == "success"){
alert("Password reset successfully.");
}
}
});
});
});
// php code
<?php
session_start();
// Get the directory of the current script
$currentDir = __DIR__;
$phpMailerDir = 'vendor\phpmailer\phpmailer';
require_once $phpMailerDir . '\src\PHPMailer.php';
require_once $phpMailerDir . '\src\SMTP.php';
require_once $phpMailerDir . '\src\Exception.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
// Create a new PHPMailer instance
/* Create a new PHPMailer object. Passing TRUE to the constructor enables exceptions. */
$mail = new PHPMailer(TRUE);
try {
// Server settings
$mail->SMTPDebug = SMTP::DEBUG_OFF;
$mail->isSMTP();
$mail->Host = 'host-name'; // Enter your SMTP server here
$mail->SMTPAuth = true;
$mail->Username = "gcira";
$mail->Password = ""; // SMTP password
$mail->SMTPSecure = 'tls';
$mail->Port = 587; // Port number depends on your SMTP server configuration
// Sender and recipient details
if(isset($_POST['email']) && !empty($_POST['email'])){
$recipient_email = $_POST['email'];
$mail->addAddress($recipient_email, 'Recipient Name');
} else {
throw new Exception('Recipient email address is not set or empty.');
}
// Email content
$mail->isHTML(false);
$mail->Subject = 'Password Reset';
$otp = rand(100000, 999999);
$_SESSION['otp'] = $otp; // Store the OTP in a session variable
$mail->Body = 'Your OTP code is: ' . $otp;
// Send the email
if (!$mail->send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
// Redirect the user to the OTP verification page
//header('Location: otp-confirmation.php');
//exit;
}
} catch (Exception $e) {
// Output an error message if the email failed to send
echo 'Message could not be sent. Mailer Error: ', $e->getMessage();
}
?>
<!-- owl carousel-->
</head>
<body>
<div class="container">
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card mt-5">
<div class="card-header">
Reset Password
</div>
<div class="card-body">
<form id="forgot-password" method="post" action="otp-confirmation.php">
<div class="form-group">
<label for="email">Email</label>
<input type="email" class="form-control" id="email" name="email" required>
</div>
<div class="form-group">
<label for="new-password">New Password</label>
<input type="password" class="form-control" id="new-password" name="new-password" required>
</div>
<div class="form-group">
<label for="confirm-password">Confirm Password</label>
<input type="password" class="form-control" id="confirm-password" name="confirm-password" required>
</div>
<button type="submit" class="btn btn-primary">Reset Password</button>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>