ORDER_HISTORY.md 1.9 KB

Browser-Linked Bestellhistorie

Zweck

Dieses Feature zeigt Kunden ihre zuletzt erstellten Bestellungen ohne Login-System.
Die Ansicht ist unter orders.php erreichbar und listet Bestellungen, die in diesem Browser gespeichert wurden.

Nutzerverhalten

  • Nach erfolgreicher Reservierung wird die Bestellnummer automatisch im Browser gemerkt.
  • Die Seite Meine Bestellungen zeigt diese Bestellungen mit Typ, Datum, Status und Detail-Link.
  • Es gibt keine manuelle Verknüpfung per Login oder Order-Import.

Technisches Modell (Best Effort)

  • Speicherung erfolgt in einem signierten Cookie.
  • Cookie-Inhalt: base64url(payload).hmac
  • Payload-Version v=1:
    • ids: Liste der gemerkten Bestellnummern
    • iat: Zeitstempel der Erstellung
  • Signatur: hash_hmac('sha256', base64url(payload), ORDER_HISTORY_COOKIE_SECRET)
  • Bei ungültiger/tamperter Signatur wird der Verlauf ignoriert (fail-safe, ohne Fehlerseite).

Limits und Aufbewahrung

  • Maximale Anzahl gemerkter Bestellungen: ORDER_HISTORY_MAX_IDS (Standard 10)
  • Aufbewahrung: ORDER_HISTORY_COOKIE_TTL_DAYS (Standard 365 Tage)
  • Reihenfolge: neueste zuerst

Sicherheit und Datenschutz

  • Browser-gebunden, nicht account-gebunden.
  • Tamper-evident durch HMAC-Signatur.
  • Cookie-Flags:
    • HttpOnly
    • SameSite=Lax
    • Secure bei HTTPS
  • Wenn Browserdaten/Cookies gelöscht werden, ist der Verlauf weg.

Konfiguration

In config.php müssen folgende Werte gesetzt sein:

  • ORDER_HISTORY_COOKIE_NAME
  • ORDER_HISTORY_COOKIE_TTL_DAYS
  • ORDER_HISTORY_MAX_IDS
  • ORDER_HISTORY_COOKIE_SECRET

ORDER_HISTORY_COOKIE_SECRET muss ein eigener, ausreichend zufälliger Wert sein.

Betrieb und Fehlerverhalten

  • Das Feature ist bewusst best effort:
    • Kann der Cookie nicht geschrieben werden, bleibt der Checkout trotzdem erfolgreich.
    • Nicht mehr vorhandene oder ausgeblendete Bestellungen erscheinen nicht in orders.php.
    • Ungültige Cookie-Daten werden still verworfen.