Sessiondauer für Warenkorb verlängern

ronzei

Aktives Mitglied
8. Juli 2021
77
4
Irgenwie nervt das, wenn nach einer Stunde oder so der Warenkorb plötzlich leer ist.

Wie kann ich die Sessiondauer für den Warenkorb verlängern?
 

artm

Sehr aktives Mitglied
22. Februar 2021
107
27
Dauerhafte Sessions würde ich nicht empfehlen, so werden neue Sicherheitslücken entstehen, hängt mit PHP und Garbage Collection Methode zusammen.

Beste Möglichkeit wäre Plugin zu entwickeln, welcher Warenkorb in Datenbank speichert, so eine Methode führt aber zu Konsequenzen, da Datenbankgröße deutlich größer sein wird.
 

ronzei

Aktives Mitglied
8. Juli 2021
77
4
Hallo atm,

vielen Dank für deine Antwort.

Mir geht es weniger um dauerhafte Sessions, als eher darum steuern zu können, dass der bereits ausgefüllte Warenkorb nicht plötzlich verschwindet.
Das verärgert nur Kunden und führt zu Kaufabbrüchen, wenn sie etwas länger benötigen zum Aussuchen und dann wieder von vorne beginnen müssen.
...oder vom Chef gestört werden und dazwischen wieder etwas arbeiten müssen. 🙂

Er darf/soll natürlich gerne verschwinden, wenn der Browser geschlossen wird.
 

fibergirl

Sehr aktives Mitglied
14. April 2016
833
266
Bei eingeloggten Kunden wird der Warenkorb doch bereits in der Datenbank gespeichert. Das Problem tritt auf, wenn ein Gast oder nicht eingeloggter Kunde sich den Warenkorb füllt. Hier gibt es tatsächlich nur die Session als Speicherort.

Man könnte evtl. mit einer vorsichtigen Session-Verlängerung auf eine Stunde oder anderthalb arbeiten. Das sollte auch für eine Unterbrechung oder die Mittagspause reichen. Weiter würde ich aus Sicherheitsgründen nicht gehen.
 

artm

Sehr aktives Mitglied
22. Februar 2021
107
27
wie fibergirl schon erwähnt hat, Session gilt als Speicherort für Gäste, und diese wird automatisch geleert.

Man könnte eine Interval-Funktion erstellen, welche dann z.B. jede Minute die AJAX-Anfrage im Hintergrund laufen lässt.
So wird Session dauerhaft bzw. länger aktiv, bis Nutzer sich ausloggt oder Garbage Collection zugreift.
Und hier gibt es auch Nachteile, Serverbelastung durch AJAX-Anfragen (hängt von Nutzerzahl ab) und Sicherheitslücke, weil Session länger aktiv ist.
 

ronzei

Aktives Mitglied
8. Juli 2021
77
4
Danke für eure Antworten.
Warnungen sind gut und richtig. Auch die Erklärungen was und wofür die Session ist, für Leser, die das eventuell nicht wissen.
Die eigentliche Frage wurde bis jetzt jedoch nicht beantwortet: Wo/Wie kann die Sessiondauer verlängert werden?
 

fibergirl

Sehr aktives Mitglied
14. April 2016
833
266
Beim Shop 5 dürfte das unter DARSTELLUNG - Einstellungen - Global, im Bereich COOKIE-EINSTELLUNGEN zu finden sein.

Cookie-Lifetime ist das Zauberwort. Die 0 steht für Defaulteinstellungen, das sind meist 20 Minuten (1200 Sekunden).
Ansonsten wird das in Sekunden angegeben.
3600 wären dann eine Stunde, 5400 wären anderthalb Stunden.

Vorsicht bei dieser Einstellung! Leider ist dort das +/- Toggle aktiv, aber wer dann bspw nur eine 3 einstellt, kommt nicht weit und hat schon verloren!

Am besten die Zahl direkt eingeben und nicht unter 60, das wäre eine Minute um überhaupt etwas (rückgängig-)machen zu können. Allerdings wird der Kunde dann keinen Warenkorb füllen können und durch das Checkout gehen, dafür reicht die Zeit nicht.

Und auch sonst gilt, wie da steht:
DURCH FALSCHE COOKIE-EINSTELLUNGEN SPERREN SIE SICH GGF. AUS DEM BACKEND AUS! ÄNDERN SIE DIESE NUR, WENN SIE GENAU WISSEN, WAS SIE TUN.

Gruß,
fibergirl
 

ronzei

Aktives Mitglied
8. Juli 2021
77
4
Danke FMoche und fibergirl,

da war ich schon und habe dort (Development Version, keine Kundenzugriffe) eine Lebensdauer von 86400 also 24 Stunden eingestellt.
Der Warenkorb leert sich trotzdem bei Inaktivität von geschätzt ca. 1/2 bis einer Stunde.

Anmerkung: ich sehe das auch etwas kritisch mit der SESSION. Es ist unglaublich was da alles drin gespeichert wird, eine Unzahl an Daten.
Dazu kommen die Plugins und das Template....

Frage an JTL: wäre da eine Trennung (wann, was gelöscht wird) möglich?
Oder den Warenkorb temporär(!) über die session-ID in der Datenbank speichern und über ein Cookie wieder auslesen?
Temporäre Warenkorbdaten können ja über cron nach x Stunden locker wieder aus der Datenbank gelöscht werden.
Cookiedauer muss ja auch nicht gleich der Sessiondauer sein.
 

ronzei

Aktives Mitglied
8. Juli 2021
77
4
Das mit dem Warenkorb ist beim Shop 5.1.2 noch immer nicht gelöst.
Es kann doch nicht sein, das JTL-Shop die einzige Shop-Software ist, wo der Warenkorb für nichtangemeldete Besucher nach kürzester Zeit gelöscht wird!

Mit der globalen Einstellungen im Shop-Backend "Cookie-Lebensdauer" wie von FMoche angegeben hat das leider gar nichts zu tun.

Und wieso bitte schön löscht JTL die gesamte $_SESSION, also auch die Daten, die ich selbst mittels Plugin schreibe?
 

FMoche

Moderator
Mitarbeiter
15. Dezember 2014
1.369
347
Halle (Saale)
"JTL" löscht schon mal gar nichts.
Sessions sind im Shop immer an einen Cookie gebunden. Und wenn der Cookie nicht mehr gültig ist, ist auch die Superglobale $_SESSION nicht mehr gültig und damit erstmal leer. So funktioniert PHP. Natürlich sind dann auch via Plugin geschriebene Daten weg.
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.706
2.733
Berlin
Firma
css-umsetzung
Es wurde ja schon schrieben, mit einem kleinen JS Script das in gewissen Zeitabständen einen Ajax Request auslöst kann man das verlängern.
Wenn es nur darum geht das die Warenkörbe nicht verloren gehen hätte ich da was feines damit auch unregistrierte User die drei Tage später zurückkommen auch noch Ihren Warenkorb behalten.

https://css-umsetzung.de/shop/CSS-Permanenter-Warenkorb
 

Ähnliche Themen