[ Mini Kiebo ]
Server: Windows NT AKFAR_SERVER 10.0 build 26200 (Windows 10) AMD64
Path:
D:
/
xampp
/
htdocs
/
campus_repo
/
public
/
[
Home
]
File: login.php
<?php if (session_status() === PHP_SESSION_NONE) { session_start(); } require_once __DIR__ . '/../config/config.php'; require_once __DIR__ . '/../src/Utils.php'; require_once __DIR__ . '/../src/Database.php'; $pdo = Database::getConnection(); $message = ''; // Jika sudah ada cookie remember_me if (!isset($_SESSION['user']) && isset($_COOKIE['remember_me'])) { $token = $_COOKIE['remember_me']; $stmt = $pdo->prepare("SELECT u.* FROM sessions s JOIN users u ON s.user_id = u.id WHERE s.session_token = ? AND s.expires_at > NOW()"); $stmt->execute([$token]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user) { $_SESSION['user'] = [ 'id' => $user['id'], 'name' => $user['name'], 'username' => $user['username'], 'email' => $user['email'], 'role' => $user['role'] ]; header("Location: admin_dashboard.php"); exit; } } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $username = trim($_POST['username']); $password = $_POST['password']; $remember = isset($_POST['remember']); if (empty($username) || empty($password)) { $message = "❌ Username dan password wajib diisi."; } else { $stmt = $pdo->prepare("SELECT * FROM users WHERE username = ? OR email = ?"); $stmt->execute([$username, $username]); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user && password_verify($password, $user['password'])) { $_SESSION['user'] = [ 'id' => $user['id'], 'name' => $user['name'], 'username' => $user['username'], 'email' => $user['email'], 'role' => $user['role'] ]; // Jika Remember Me dicentang if ($remember) { $token = bin2hex(random_bytes(32)); $expires = date('Y-m-d H:i:s', strtotime('+30 days')); $stmt = $pdo->prepare("INSERT INTO sessions (user_id, session_token, expires_at) VALUES (?,?,?)"); $stmt->execute([$user['id'], $token, $expires]); setcookie('remember_me', $token, time() + (86400 * 30), "/"); // 30 hari } header("Location: admin_dashboard.php"); exit; } else { $message = "❌ Username/email atau password salah."; } } } ?> <?php include 'header.php'; ?> <h2>Login</h2> <?php if ($message): ?> <div style="color:red;"><?= Utils::sanitize($message) ?></div> <?php endif; ?> <form method="post"> <label>Username atau Email:</label> <input type="text" name="username" required> <label>Password:</label> <input type="password" name="password" required> <label>Remember Me</label> <input type="checkbox" name="remember"> <button type="submit">Login</button> </form> <?php include 'footer.php'; ?>