CoolFace
Apppublic

gamg6688/firmwarefusion-hub

sourceHugging Faceupdated 9mo agoView on Hugging Face
0likes
login.php115 linesDownload Raw Back to root
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```