GX-Abgewiesen #42700
geschlossenShop scheint gesetzten Haken bei AGB/WRB im Checkout zu vergessen
0%
Beschreibung
Ausgangssituation: Unter Konfiguration -> Allgemeines -> Rechtliches ist „Widerrufsrecht im Bestellvorgang bestätigen“ (GM_CHECK_WITHDRAWAL) nicht aktiviert.
Ablauf: Man durchläuft den Checkout, setzt auf checkout_payment den AGB-Haken und geht weiter auf die checkout_confirmation. Klickt man jetzt in die Adressleiste und drückt Enter, landet man wieder auf der checkout_payment, die einem vorwirft, man hätte den AGB-Haken nicht gesetzt.
Ursache: Die checkout_confirmation erzeugt eine Ausgabe bei Aufruf per POST und verlässt sich auch darauf, so aufgerufen zu werden. Diese Grundannahme ist jedoch ungültig, da auch die pre_confirmation_check()-Methoden der Zahlungs- und Zusammenfassungsmodule aufgerufen werden, die Weiterleitungen auslösen können, an deren Ende die checkout_confirmation per GET aufrufbar sein muss.
Lösungsansatz kurzfristig: Bei $_SERVER['REQUEST_METHOD'] === 'POST' darf keine Ausgabe erzeugt werden. Die $_POST-Parameter müssen in geeigneter Weise ausgewertet werden und anschließend eine Weiterleitung auf checkout_confirmation ausgelöst werden, so dass der Aufruf der pre_confirmation_check()-Methoden und die Ausgabe aus einem GET-Aufruf heraus erfolgen.
Lösungsansatz langfristig: Seiten sollten grundsätzlich $_SERVER['REQUEST_URI'] als Action für POST-Formulare verwenden, ihre POST-Daten also selbst verarbeiten, und erst danach auf die Folgeseite weiterleiten, so dass letztere immer zuerst per GET geladen wird.