false, 'error' => 'Session expirée. Veuillez vous reconnecter.']); exit; } $currentUrl = $_SERVER['REQUEST_URI'] ?? '/'; $redirectParam = urlencode($currentUrl); $target = ($loginPage ?? '/login.php') . '?redirect=' . $redirectParam; header('Location: ' . $target); exit; } } function csrf_token(): string { if (session_status() === PHP_SESSION_NONE) { session_start(); } if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } return $_SESSION['csrf_token']; } function verify_csrf(?string $token): bool { if (session_status() === PHP_SESSION_NONE) { session_start(); } if (empty($_SESSION['csrf_token']) || !$token) { return false; } return hash_equals($_SESSION['csrf_token'], $token); } if (!isset($familyPeople) && !empty($family_id)) { require_once __DIR__ . '/db.php'; $stmtPeople = $pdo->query("SELECT id, name, user_id FROM pf_people ORDER BY id ASC"); $familyPeople = $stmtPeople->fetchAll(PDO::FETCH_ASSOC); }