PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ] ); } catch (PDOException $e) { die("Database connection failed: " . $e->getMessage()); } $message = ''; $messageType = ''; // Handle form submission if ($_POST) { if (isset($_POST['action']) && $_POST['action'] === 'signin') { $username = trim($_POST['username']); $password = $_POST['password']; if (empty($username) || empty($password)) { $message = "Please enter both username and password."; $messageType = 'error'; } else { // Check user in database $stmt = $pdo->prepare(" SELECT usr_id, usr_user, usr_email, usr_password, usr_fname, usr_lname, usr_active FROM db_accountuser WHERE (usr_user = ? OR usr_email = ?) AND usr_active = 1 "); $stmt->execute([$username, $username]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['usr_password'])) { // Successful login $_SESSION['user_id'] = $user['usr_id']; $_SESSION['username'] = $user['usr_user']; $_SESSION['user_email'] = $user['usr_email']; $_SESSION['user_name'] = $user['usr_fname'] . ' ' . $user['usr_lname']; $_SESSION['logged_in'] = true; $_SESSION['USER_ID'] = $user['usr_id']; $_SESSION['USER_NAME'] = $user['usr_user']; $_SESSION['USER_DNAME'] = $user['usr_fname'] . ' ' . $user['usr_lname']; // Set admin session if user is admin if ($user['usr_user'] === 'admin' || strpos($user['usr_user'], 'admin') !== false) { $_SESSION['admin_logged_in'] = true; $_SESSION['admin_user'] = $user['usr_user']; $_SESSION['ADMIN_NAME'] = trim($user['usr_fname'] . ' ' . $user['usr_lname']) ?: $user['usr_user']; } // Update last login $updateStmt = $pdo->prepare("UPDATE db_accountuser SET usr_lastlogin = NOW() WHERE usr_id = ?"); $updateStmt->execute([$user['usr_id']]); if (!empty($_SESSION['admin_logged_in'])) { $checkStmt = $pdo->prepare("SELECT cfg_data FROM db_settings WHERE cfg_name = 'token_setup_complete' LIMIT 1"); $checkStmt->execute(); $tokenSetup = $checkStmt->fetchColumn(); if ($tokenSetup !== '1') { header("Location: /admin_token_setup.php"); exit; } } $message = "Login successful! Welcome back, " . htmlspecialchars($user['usr_fname']) . "!"; $messageType = 'success'; } else { $message = "Invalid username/email or password."; $messageType = 'error'; } } } elseif (isset($_POST['action']) && $_POST['action'] === 'signup') { $username = trim($_POST['username']); $email = trim($_POST['email']); $password = $_POST['password']; $confirm_password = $_POST['confirm_password']; $first_name = trim($_POST['first_name']); $last_name = trim($_POST['last_name']); // Validation if (empty($username) || empty($email) || empty($password) || empty($first_name) || empty($last_name)) { $message = "All fields are required."; $messageType = 'error'; } elseif ($password !== $confirm_password) { $message = "Passwords do not match."; $messageType = 'error'; } elseif (strlen($password) < 6) { $message = "Password must be at least 6 characters long."; $messageType = 'error'; } else { // Check if username or email already exists $checkStmt = $pdo->prepare("SELECT usr_id FROM db_accountuser WHERE usr_user = ? OR usr_email = ?"); $checkStmt->execute([$username, $email]); if ($checkStmt->fetch()) { $message = "Username or email already exists."; $messageType = 'error'; } else { // Create new user $hashedPassword = password_hash($password, PASSWORD_DEFAULT); $userKey = 'usr_' . uniqid(); $insertStmt = $pdo->prepare(" INSERT INTO db_accountuser ( usr_key, usr_user, usr_email, usr_password, usr_fname, usr_lname, usr_active, usr_joindate, usr_lastlogin, usr_IP ) VALUES (?, ?, ?, ?, ?, ?, 1, NOW(), NOW(), ?) "); $userIP = $_SERVER['REMOTE_ADDR'] ?? '127.0.0.1'; if ($insertStmt->execute([$userKey, $username, $email, $hashedPassword, $first_name, $last_name, $userIP])) { $message = "Account created successfully! You can now sign in."; $messageType = 'success'; } else { $message = "Failed to create account. Please try again."; $messageType = 'error'; } } } } } // Check if user is already logged in $isLoggedIn = isset($_SESSION['logged_in']) && $_SESSION['logged_in']; // Determine current mode $mode = $_GET['mode'] ?? 'signin'; $isSignup = ($mode === 'signup'); ?>
Welcome back! = $isSignup ? 'Create your account' : 'Sign in to your account' ?>