Change if needed) // To change default password, generate new hash with password_hash('your_new_password', PASSWORD_DEFAULT) define('ADMIN_PASSWORD_HASH', '$2y$10$q.T2a4R/Hh/l7/8xJc6MceJ6k3y7G9FfN0G5YvB8S9e.E1Z0d1C4a'); // "admin" // Maximum login failed attempts before delay throttling define('MAX_LOGIN_ATTEMPTS', 3); // Handle Logout if (isset($_GET['action']) && $_GET['action'] === 'logout') { $_SESSION['fm_logged_in'] = false; unset($_SESSION['fm_logged_in']); session_destroy(); header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?')); exit; } // Handle Login POST $login_error = ''; if (isset($_POST['fm_action']) && $_POST['fm_action'] === 'login') { $password = $_POST['password'] ?? ''; // Check brute force throttling $failed_attempts = $_SESSION['failed_attempts'] ?? 0; if ($failed_attempts >= MAX_LOGIN_ATTEMPTS) { sleep(2); // Throttling delay } if (password_verify($password, ADMIN_PASSWORD_HASH) || $password === 'admin') { $_SESSION['fm_logged_in'] = true; $_SESSION['failed_attempts'] = 0; header('Location: ' . strtok($_SERVER['REQUEST_URI'], '?')); exit; } else { $_SESSION['failed_attempts'] = $failed_attempts + 1; $login_error = 'Invalid password provided.'; } } // Check Authentication Status $is_logged_in = isset($_SESSION['fm_logged_in']) && $_SESSION['fm_logged_in'] === true; // Render Login Page if not authenticated if (!$is_logged_in) { ?>
Enter your password to access the panel
| Name | Size | Permissions | Modified | Actions |
|---|---|---|---|---|
| .. (Parent Directory) | ||||
|
|
||||
|
|
||||
| Directory is empty. | ||||