79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| require_once 'Header.php';
 | |
| require_once 'NoDirectPhpAcess.php';
 | |
| require_once "get_mysql_credentials.php";
 | |
| 
 | |
| ini_set('display_errors', 0);
 | |
| error_reporting(E_ALL);
 | |
| 
 | |
| $con = mysqli_connect("localhost", $mysql_username, $mysql_password, "lrr");
 | |
| 
 | |
| if (mysqli_connect_errno()) {
 | |
|     error_log("Database connection failed: " . mysqli_connect_error());
 | |
|     die("An error occurred. Please try again later.");
 | |
| }
 | |
| 
 | |
| // Check if user_id is set in the session
 | |
| if (!isset($_SESSION['email'])) {
 | |
|     die("Session expired. Please log in again.");
 | |
| }
 | |
| 
 | |
| $email = $_SESSION['email'];
 | |
| 
 | |
| if ($_SERVER['REQUEST_METHOD'] == 'POST') {
 | |
|     // Handle password reset
 | |
|     if (isset($_POST['new_password']) && isset($_POST['confirm_password'])) {
 | |
|         $new_password = $_POST['new_password'];
 | |
|         $confirm_password = $_POST['confirm_password'];
 | |
| 
 | |
|         if (!preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\d\s]).{8,}$/', $new_password)) {
 | |
|             echo '<div class="alert alert-danger">Password must be at least 8 characters long and include uppercase and lowercase letters, numbers, and special characters.</div>';
 | |
|         } elseif ($new_password !== $confirm_password) {
 | |
|             echo '<div class="alert alert-danger">Passwords do not match. Please try again.</div>';
 | |
|         } else {
 | |
|             $hashed_password = password_hash($new_password, PASSWORD_ARGON2ID);
 | |
|             $user_id = $_SESSION['user_id'];
 | |
| 
 | |
|             $stmt = $con->prepare("UPDATE users_table SET Password = ? WHERE email = ? AND user_id = ?");
 | |
|             $stmt->bind_param("sss", $hashed_password, $email, $user_id);
 | |
| 
 | |
|             if ($stmt->execute()) {
 | |
|                 echo '<div class="alert alert-success">Password reset successfully. You can now log in with your new password.</div>';
 | |
|                 unset($_SESSION['user_id']); // Clear user_id after successful password reset
 | |
|                 header("Location: index.php");
 | |
|             } else {
 | |
|                 error_log("Error updating password for user ID: $user_id");
 | |
|                 echo '<div class="alert alert-danger">An error occurred. Please try again later.</div>';
 | |
|             }
 | |
|             $stmt->close();
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| // Display the reset password form
 | |
| echo '
 | |
| <br/><br/><br/>
 | |
| <div class="container">
 | |
| <div class="row">
 | |
| <div class="col-md-5"></div>
 | |
| <div class="col-md-5">
 | |
| <form action="" method="POST" class="">
 | |
|     <legend>Reset Your Password</legend><br/>
 | |
|        New Password <label class="form-text">Must include uppercase and lowercase letters, digits and special characters.</label>  
 | |
|        <input type="password" name="new_password"  placeholder=" Enter New Password" class="form-control" required>
 | |
|        <br/>
 | |
|       Confirm New Password
 | |
|         <input type="password" name="confirm_password" placeholder="Confirm New Password" class="form-control" required>
 | |
|      <br/>
 | |
|     <button id="butt" type="submit" class="btn btn-primary">Reset Password</button>
 | |
| </form>
 | |
| </div></div></div>
 | |
| <style>
 | |
| .guideline { display: none;}
 | |
| #newPassword:focus + .guideline {display: block;}
 | |
| ';
 | |
| 
 | |
| 
 | |
| mysqli_close($con);
 | |
| ?>
 |