Marco hat mal über ein Modul einen kleinen Shop programmiert. Nach drei Jahren problemlosen Betrieb, kam plötzlich eine leere Bestellung rein. Das ist eigentlich nicht möglich, da das Skript eine Abfrage durchführt. Wenn bei der Prüfung festgestellt wird, dass

keine Artikel ausgewählt wurden, wird eine Fehlermeldung erzeugt. Der nächste Schritt kann nicht ausgeführt werden. Also musste die Prüfung irgendwie umgangen worden sein. Der Kaufprozess im Shop ist in mehrere Stufen aufgeteilt.

Stufen im Kaufprozesses:

  1. Stufe, Artikel auswählen und prüfen ob artikel ausgewählt wurden
  2. Artikel auflisten und Preise ausrechnen und auflisten
  3. Lieferort (innerhalb bzw. außerhalb Deutschlands) auswählen
  4. Versandkosten addieren und Gesamtpreis ausgeben
  5. Rechnungsadresse und Lieferadresse eingeben und Kauf abschließen

Einem findigen User ist aufgefallen, dass wenn die Kaufabschlussseite, die eigentlich über die Navigation nicht erreichbar ist, direkt aufgerufen wird, die Prüfung auf ausgewählte Artikel umgangen werden kann. Und damit kann eine leere Bestellung abgegeben werden.

Die Lösung

Natürlich hatte Marco das Problem auf schnelle und einfach Art gelöst: Es musste also in die Kaufabschlussseite eine Prüfung rein, ob im Warenkorb Artikel gelistet sind. Ist das nicht der Fall, wird der User nun zur Shopseite geleitet - dort kann er dann Artikel auswählen. Als Fallback, sollte die Umleitung einfach mal nicht funktionieren, wird ein Fehlermeldung ausgegeben und der Bestellvorgang kann nicht abgeschlossen werden.

Für den redirect (Umleitung zum Shop) kann man sich die Eigenschaft, dass Joomla jede Seite erst beim Aufruf vollständig per php zusammenbaut bevor diese an den Browser als HTML Seite ausgegeben wird, zunutze machen. Beim Parsen wird der Redirect erkannt und der User erfolgreich umgeleitet. Oft genügen schon ganz einfache und schlichte Codezeile, um eine effiziente Lösung herbei zu führen.