login(), 'logout' => logout() }; function login() { if (checkcookies() !== false) redirect('index.php'); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $form = validate($_POST, [ 'username' => ['length:3-18', 'alpha-spaces'], 'password' => ['length:6-255'], 'remember' => ['bool'] ]); if (!$form['valid']) { exit(ul_from_validate_errors($form['errors'])); } $form = $form['data']; $query = db()->query('SELECT id, username, password FROM users WHERE username = ? LIMIT 1;', [$form['username']]); $row = $query->fetchArray(SQLITE3_ASSOC); if ($row === false || !password_verify($_POST['password'] ?? '', $row['password'])) die("Invalid username or password. Please go back and try again."); $expiretime = $form['remember'] ? time() + 31536000 : 0; $rememberme = $form['remember'] ? 1 : 0; $cookie = implode(' ', [$row['id'], $row['username'], $row['password'], $rememberme]); set_cookie("dkgame", $cookie, $expiretime); header("Location: index.php"); exit; } $page = gettemplate("login"); $title = "Log In"; display($page, $title, false, false, false, false); } function logout() { set_cookie("dkgame", "", -3600); redirect('login.php?do=login'); }