prepare("SELECT id FROM users WHERE username = ? OR email = ?"); $stmt->execute([$username, $email]); if ($stmt->fetch()) { $error = 'Ce nom d\'utilisateur ou cet email est déjà utilisé.'; } else { $hashed_password = password_hash($password, PASSWORD_DEFAULT); try { $db->beginTransaction(); $stmt = $db->prepare("INSERT INTO users (username, email, password) VALUES (?, ?, ?)"); $stmt->execute([$username, $email, $hashed_password]); $new_user_id = $db->lastInsertId(); // Initialize resources for the new user $resources = $db->query("SELECT id, slug FROM game_resources")->fetchAll(PDO::FETCH_ASSOC); $res_stmt = $db->prepare("INSERT INTO user_resources (user_id, resource_id, amount) VALUES (?, ?, ?)"); foreach ($resources as $resource) { $initialAmount = ($resource['slug'] === 'res_xp') ? 1 : 0; $res_stmt->execute([$new_user_id, $resource['id'], $initialAmount]); } $db->commit(); $success = 'Compte créé avec succès ! Vous pouvez maintenant vous connecter.'; } catch (Exception $e) { $db->rollBack(); $error = 'Erreur lors de la création du compte.'; } } } } elseif ($action === 'login') { $username = trim($_POST['username'] ?? ''); $password = $_POST['password'] ?? ''; if (empty($username) || empty($password)) { $error = 'Tous les champs sont obligatoires.'; } else { $db = db(); $stmt = $db->prepare("SELECT * FROM users WHERE username = ?"); $stmt->execute([$username]); $user = $stmt->fetch(); if ($user && password_verify($password, $user['password'])) { $_SESSION['user_id'] = $user['id']; $_SESSION["username"] = $user["username"]; $_SESSION["display_name"] = $user["display_name"]; $_SESSION['role'] = $user['role']; $db->prepare("UPDATE users SET last_login = CURRENT_TIMESTAMP WHERE id = ?")->execute([$user['id']]); header('Location: index.php'); exit; } else { $error = 'Identifiants incorrects.'; } } } } if (isset($_GET['logout'])) { session_destroy(); header('Location: index.php'); exit; } $page = $_GET['page'] ?? 'login'; ?> <?php echo $page === 'register' ? 'Création de compte' : 'Connexion'; ?>

Créer un compte

Connexion

Retour à la galaxie