gamg6688/firmwarefusion-hub
0
1```php2<?php3require_once 'auth.php';4 5// Redirect if already logged in6if (isLoggedIn()) {7 header('Location: index.php');8 exit();9}10 11$errors = [];12$username = '';13 14if ($_SERVER['REQUEST_METHOD'] === 'POST') {15 $username = trim($_POST['username'] ?? '');16 $password = $_POST['password'] ?? '';17 $csrf_token = $_POST['csrf_token'] ?? '';18 $remember = isset($_POST['remember']);19 20 // Validate CSRF token21 if (!validateCSRFToken($csrf_token)) {22 $errors[] = "Invalid CSRF token.";23 }24 25 // Validate inputs26 if (empty($username)) {27 $errors[] = "Username or email is required.";28 }29 30 if (empty($password)) {31 $errors[] = "Password is required.";32 }33 34 // Attempt login if no errors35 if (empty($errors)) {36 // Find user by username or email37 $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? OR email = ?");38 $stmt->execute([$username, $username]);39 $user = $stmt->fetch(PDO::FETCH_ASSOC);40 41 if ($user && verifyPassword($password, $user['password'])) {42 // Login successful43 $_SESSION['user_id'] = $user['id'];44 $_SESSION['username'] = $user['username'];45 46 // Set remember me cookie if selected47 if ($remember) {48 $token = bin2hex(random_bytes(32));49 $expire = time() + 60 * 60 * 24 * 30; // 30 days50 setcookie('remember_token', $token, $expire, '/', '', false, true);51 52 // Store token in database53 $stmt = $pdo->prepare("UPDATE users SET remember_token = ? WHERE id = ?");54 $stmt->execute([$token, $user['id']]);55 }56 57 header('Location: index.php');58 exit();59 } else {60 $errors[] = "Invalid username/email or password.";61 }62 }63}64 65$csrf_token = generateCSRFToken();66?>67 68<!DOCTYPE html>69<html lang="en">70<head>71 <meta charset="UTF-8">72 <meta name="viewport" content="width=device-width, initial-scale=1.0">73 <title>Login | FirmwareFusion</title>74 <link rel="stylesheet" href="style.css">75</head>76<body>77 <div class="container">78 <h1>Login</h1>79 80 <?php if (!empty($errors)): ?>81 <div class="alert alert-error">82 <?php foreach ($errors as $error): ?>83 <p><?php echo htmlspecialchars($error); ?></p>84 <?php endforeach; ?>85 </div>86 <?php endif; ?>87 88 <form method="POST" action="login.php">89 <input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($csrf_token); ?>">90 91 <div class="form-group">92 <label for="username">Username or Email</label>93 <input type="text" id="username" name="username" value="<?php echo htmlspecialchars($username); ?>" required>94 </div>95 96 <div class="form-group">97 <label for="password">Password</label>98 <input type="password" id="password" name="password" required>99 </div>100 101 <div class="form-group">102 <label>103 <input type="checkbox" name="remember"> Remember me104 </label>105 </div>106 107 <button type="submit" class="btn btn-primary">Login</button>108 </form>109 110 <p>Don't have an account? <a href="register.php">Register here</a></p>111 <p><a href="forgot_password.php">Forgot your password?</a></p>112 </div>113</body>114</html>115```