"Invalid JSON session file"]); exit(); } // Debug: Log the original import data structure error_log("Import data structure: " . print_r(array_keys($imported), true)); if (isset($imported["characters"])) { error_log("Characters in import: " . print_r(array_keys($imported["characters"]), true)); } // Thorough cleaning of the imported data if (isset($imported["characters"]) && is_array($imported["characters"])) { foreach (array_keys($imported["characters"]) as $charID) { // Remove any entries with empty or non-numeric character IDs if (empty($charID) || $charID === "" || !is_numeric($charID)) { error_log("Removing invalid character ID: '$charID'"); unset($imported["characters"][$charID]); } } } // Only assign cleaned data to session $_SESSION = $imported; // Refresh tokens for each character if needed if (isset($_SESSION["characters"]) && is_array($_SESSION["characters"])) { // Extra validation check foreach (array_keys($_SESSION["characters"]) as $charID) { if (empty($charID) || $charID === "") { error_log("Removing empty character ID from session"); unset($_SESSION["characters"][$charID]); } } foreach ($_SESSION["characters"] as $charID => &$char) { if ( empty($char["access_token"]) || !empty($char["refresh_token"]) // Always refresh on import ) { error_log("Refreshing token for character $charID"); $new_tokens = refresh_token($char["refresh_token"]); if (!empty($new_tokens["access_token"])) { $char["access_token"] = $new_tokens["access_token"]; if (!empty($new_tokens["refresh_token"])) { $char["refresh_token"] = $new_tokens["refresh_token"]; } } else { error_log("Failed to refresh token for character $charID"); } } } unset($char); // Break the reference to avoid unexpected behavior // Final validation to ensure no empty entries if (isset($_SESSION["characters"][""])) { error_log("Final cleanup: Removing empty character ID"); unset($_SESSION["characters"][""]); } } // Log the final session structure error_log("Final character count: " . count($_SESSION["characters"])); error_log("Character IDs after import: " . implode(", ", array_keys($_SESSION["characters"]))); header("Content-Type: application/json"); echo json_encode([ "status" => "success", "characters_imported" => count($_SESSION["characters"]), ]); // After successful import, redirect to index.php header("Location: index.php"); exit(); } else { http_response_code(400); echo json_encode(["error" => "POST with session_file required"]); exit(); }