Hallo,
In meinem Fall möchte ich, wenn der Benutzer die Seite vorzeitig verlässt, die von ihm gemachten Eingaben (konkret Platzreservierungen) löschen. … Gibt es da eine Möglichkeit?
Nein. HTTP ist statuslos, es gibt keine Möglichkeit, eine »Session« ordnungsgemäß zu beenden. Hier kann letztlich nur mit Timeouts gearbeitet werden.
Ich habe es als Workaround mit einem Cronjob gelöst, der nicht abgeschlossene Reservierungen nach einer Weile entfernt.
Das ist die einzige zuverlässige Möglichkeit. Wobei man den Timeout klein halten kann, wenn der Client im Hintergrund pollt und dem Server meldet, dass der Tab noch geöffnet ist (z.B. während der Kunde seine Kreditkartendaten sucht).
Ich würde beim beforeunload einen Request senden, der den Timeout auf ein paar Minuten setzt. Wenn die Seite verlassen wird, dann wird die Session schnell durch einen Cronjob beendet. Gleichzeitig sollte im beforeunload das Polling (neu) gestartet werden. Wenn der Nutzer nämlich auf der Seite bleibt, können weitere Requests gemacht werden, die den Timeout wieder hochsetzen.
Mathias