Illegal offset type in Suche

  • Betroffene Version
    WoltLab Suite 5.4
    Betroffene App
    WoltLab Suite Core

    Die Suche kann zu einer Fehlermeldung führen, wenn man /index.php?search/&types%5B%5D[]=com.woltlab.wbb.post angibt:

    Aufgerufene URL
    GET /core/search/?types%5B%5D[]=com.woltlab.wbb.post
    Referrer
    WoltLab Suite
    5.4.16
    PHP
    7.4.28
    Fehlermeldung
    Illegal offset type
    Art
    wcf\system\exception\ErrorException
    Datei (Zeile)
    /customers/kittmedia/home/shop.kittmedia.com/core/lib/system/WCF.class.php (344)
    Stacktrace
    1. /customers/kittmedia/home/shop.kittmedia.com/core/lib/system/api/sentry/sentry/sentry/src/ErrorHandler.php (303): wcf\system\WCF::handleError(…)
    2. /customers/kittmedia/home/shop.kittmedia.com/core/lib/system/search/SearchEngine.class.php (72): Sentry\ErrorHandler->handleError(…)
    3. /customers/kittmedia/home/shop.kittmedia.com/core/lib/form/SearchForm.class.php (175): wcf\system\search\SearchEngine->getObjectType(…)
    4. /customers/kittmedia/home/shop.kittmedia.com/core/lib/page/AbstractPage.class.php (121): wcf\form\SearchForm->readParameters(…)
    5. /customers/kittmedia/home/shop.kittmedia.com/core/lib/system/request/Request.class.php (89): wcf\page\AbstractPage->__run(…)
    6. /customers/kittmedia/home/shop.kittmedia.com/core/lib/system/request/RequestHandler.class.php (119): wcf\system\request\Request->execute(…)
    7. /customers/kittmedia/home/shop.kittmedia.com/core/index.php (11): wcf\system\request\RequestHandler->handle(…)
  • Alexander Ebert 10. Juni 2022 um 16:44

    Hat das Label Zukünftige Behebung hinzugefügt.
    • Offizieller Beitrag

    Es gibt „drölfzig“ Stellen, auf die dies zutrifft und die Ursache ist eine grundsätzliche Design-Schwäche bei der Verarbeitung von Parametern. Es ist fairerweise im Kern aber auch „nur“ ein „nerviges“ Problem. Es macht einfach keinen Sinn, an einer spezifischen Stelle anzusetzen, da dies das Problem effektiv nur verlagern würde.

    Eine echte Lösung kann nur eine wohldefinierte Verarbeitung von Parametern sein, die konsequent zum Einsatz kommt und eine einheitliche Verarbeitung ermöglicht. Dies erfordert eine ordentliche Planung und Durchführung, um dies sorgfältig umzusetzen.

    • Offizieller Beitrag

    Hallo,

    ich setze dieses Thema mal auf „Umgesetzt“, weil das von Alexander angesprochene Konzept existiert.

    Für Entwickler

    Mit WoltLab Suite 6.0 liefern wir „Valinor“ zur Strukturvalidierung von Eingabeparametern mit: https://docs.woltlab.com/6.0/migration/…nput-validation

    Für API-Controller auf Basis von PSR-15 verweise ich ganz allgemein auf dieses Thema:

    Tim Düsterhus
    9. Dezember 2022 um 17:20

    Für Controller mit denen der Benutzer direkt interagiert, sollte der MappingError von Valinor gefangen werden, um die Benutzerfreundlichkeit zu erhöhen.

    Speziell für den id-Parameter sieht ein vollständiges Beispiel wie folgt aus. Es können und sollten natürlich auch andere Parameter (bspw. filter-Parameter) validiert werden. Referenziert dazu die Valinor-Dokumentation.

    Nicht-PSR-15, kein API-Controller

    PSR-15, API-Controller

    PHP
            $parameters = Helper::mapQueryParameters(
                $request->getQueryParams(),
                <<<'EOT'
                    array {
                        id: positive-int
                    }
                    EOT
            );
            // Objekt aus der Datenbank lesen und prüfen ob ID existiert.
  • Tim Düsterhus 7. Februar 2023 um 17:07

    Hat das Label 6.0.0 Beta 1 hinzugefügt.
  • Tim Düsterhus 7. Februar 2023 um 17:07

    Hat das Label von Zukünftige Behebung auf Behoben geändert.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!