diff --git a/api/v1/result/browser.quick.test.php b/api/v1/result/browser.quick.test.php index e780979..1317e66 100644 --- a/api/v1/result/browser.quick.test.php +++ b/api/v1/result/browser.quick.test.php @@ -6,16 +6,14 @@ declare(strict_types=1); /** * Handler für: /v1/browser.quick.test * - * WICHTIG: - * - Keine direkten header()/echo-Ausgaben hier. - * - Der Router (router.v1.php) ruft diese Funktion auf und encodiert das Ergebnis als JSON. - * - * Erwartung des Routers: + * Wird vom Router (/api/router/router.v1.php) aufgerufen. + * Erwartung: * function browser_quick_test_handle_request(): array */ function browser_quick_test_handle_request(): array { - // Session & DB + // Session sicherstellen (sollte über fileload.php schon aktiv sein, + // aber doppelt schadlos) if (session_status() !== PHP_SESSION_ACTIVE) { session_start(); } @@ -27,8 +25,6 @@ function browser_quick_test_handle_request(): array $data = json_decode($raw, true); if (!is_array($data)) { - // Kein gültiges JSON → wir geben nur das Ergebnis zurück, - // HTTP-Status-Code kann der Router setzen, wenn er mag. return [ 'ok' => false, 'error' => 'Invalid JSON payload', @@ -36,30 +32,21 @@ function browser_quick_test_handle_request(): array } // --------------------------------------------------------------------- - // 2. User / Session ermitteln – angepasst an dein Login + // 2. User / Session ermitteln (robust, mehrere Varianten) // --------------------------------------------------------------------- $userId = null; $isLoggedIn = 0; - // **Primär**: so wird der User in src/auth/login.php gesetzt: - // $_SESSION['user'] = ['id' => ..., ...] - if ( - isset($_SESSION['user']) && - is_array($_SESSION['user']) && - !empty($_SESSION['user']['id']) - ) { - $userId = (int)$_SESSION['user']['id']; - } - // Fallback A: klassisch - elseif (!empty($_SESSION['user_id'])) { + // A) Klassisch: user_id direkt in der Session + if (!empty($_SESSION['user_id'])) { $userId = (int)$_SESSION['user_id']; } - // Fallback B: auth-Block (z.B. $_SESSION['auth']['user_id']) - elseif ( - isset($_SESSION['auth']) && - is_array($_SESSION['auth']) && - !empty($_SESSION['auth']['user_id']) - ) { + // B) Dein aktuelles Login verwendet $_SESSION['user']['id'] + elseif (!empty($_SESSION['user']) && is_array($_SESSION['user']) && !empty($_SESSION['user']['id'])) { + $userId = (int)$_SESSION['user']['id']; + } + // C) Optionaler auth-Block + elseif (!empty($_SESSION['auth']) && is_array($_SESSION['auth']) && !empty($_SESSION['auth']['user_id'])) { $userId = (int)$_SESSION['auth']['user_id']; } @@ -78,13 +65,13 @@ function browser_quick_test_handle_request(): array $modeRequested = $data['mode_requested'] ?? 'unknown'; $meta = $data['meta'] ?? []; - // Hier könntest du später Browser/OS parsen + // Browser/OS – vorerst leer, später per Parser füllen $browserName = null; $browserVersion = null; $osName = null; $osVersion = null; - // Beispiel: Gesamtmenge geschriebener/verifizierter Bytes aggregieren + // Gesamtmenge geschriebener/verifizierter Bytes aggregieren $measuredBytes = 0; if (!empty($data['quick']) && is_array($data['quick'])) { @@ -100,8 +87,7 @@ function browser_quick_test_handle_request(): array // Kapazitätsstatus vorerst neutral $capacityStatus = 'unknown'; - // Volume-/Stick-Daten hast du aktuell im Browser noch nicht separat, - // darum bleiben diese Felder (erstmal) NULL: + // Volume-/Stick-Daten aktuell noch nicht separat ermittelt $volumeLabel = null; $manufacturer = null; $modelName = null; @@ -167,7 +153,7 @@ function browser_quick_test_handle_request(): array $stmt = $pdo->prepare($sql); $stmt->execute([ - 'user_id' => $userId, + 'user_id' => $userId, // <- hier sollte 1 stehen, wenn eingeloggt 'is_logged_in' => $isLoggedIn, 'usb_device_id' => null, 'browser_name' => $browserName, @@ -189,25 +175,27 @@ function browser_quick_test_handle_request(): array $id = (int)$pdo->lastInsertId(); - // Optionales Debug-Logging, falls trotz Login kein user_id ankam - if ($isLoggedIn === 0 && !empty($_SESSION['user'])) { - error_log('[usbcheck] browser.quick.test: SESSION[user] vorhanden, aber user_id blieb leer: ' . json_encode($_SESSION['user'])); - } - + // DEBUG: damit wir im Frontend/NW-Tab sehen, was der Handler glaubt return [ 'ok' => true, 'id' => $id, 'mode' => $modeRequested, 'measured_bytes' => $measuredBytes ?: null, + + // Debug-Felder – später für PROD wieder rauswerfen + 'debug_user_id' => $userId, + 'debug_is_logged_in' => $isLoggedIn, + 'debug_session_id' => $sessionId, + 'debug_session_has_user' => isset($_SESSION['user']), + 'debug_session_user' => $_SESSION['user'] ?? null, ]; } catch (Throwable $e) { - // Fehler ins Error-Log schreiben (nur Server-seitig sichtbar) error_log('[usbcheck] web_quicktests insert failed: ' . $e->getMessage()); return [ 'ok' => false, 'error' => 'DB error', - 'debug' => $e->getMessage(), // zum Debuggen – ggf. später entfernen + 'debug' => $e->getMessage(), ]; } }