Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SESSION-Problem

Empfohlene Antworten

Veröffentlicht

Hi @ all, :floet:

hab da mal ne kleine Frage, und zwar soll ich mich mit ein bissel mit SESSIONS auseinander setzen, das Problem is folgendes:

Wenn ich mich einlogge wird eine Session gesetzt, und zwar in der Datenbank! Die Session wird natuerlich erst nach einem LOGOUT wieder aus der Datenbank geloescht... Ich soll mir ne Loesung ausdenken, wie man die Session am besten wieder aus der DB loescht wenn das Fenster einfach durch das "X" geschlossen wird!!! Es darf auch JavaScript sein :cool: Problem ist naemilich beim naechsten LOGIN wird zunaechst ueberprueft ob schon eine SESSION fuer diesen Benutzer besteht...

Nu denn, wenn jemand eine Loesung weiss, dem waere ich sehr dankbar!!!

:bimei

hab mir selber ein sessionmanagement geschrieben, das auch erfolgreich auf einigen seiten läuft.

ich habe einen timestamp wann die session das letzte mal benutzt wurde und ein timeout - alle die darüber sind, sind eh abgelaufen und werden gelöscht. das mache ich bei jedem aufruf (bei viel traffic haut das allerdings ein bischen auf die cpu - deswegen hab ich ein zufall von 1:10 eingebaut.) e'voila keine alten sessions in der db.

Du wirst von einem Browser niemals 100%ig mitbekommen, wann der User das letzte Fenster geschlossen hat. Ist so. Dazu zwingen auf einen 'Logout' Button zu drücken kannst du auch nicht. Das heisst die direkte Info "User hat sich ausgeloggt" wirst du nicht bekommen können.

Es ist daher am einfachsten du setzt beim Login einen Timestamp auf den Log-Datensatz. Einmal pro Stunde/Tag/Woche/Jahr/... lässt du dann einen Abgleich über die Datenbank laufen, der alle Einträge löscht, die älter als X Stunden/Tage/... sind.

nachdem du nicht angegeben hast, welche scriptsprache du benutzt:

zumindest in asp gibts die ereignisse Session_OnStart und Session_OnEnd, die in der global.asa definiert werden können. dort kann z.b. beim auftreten von Session_OnEnd (also wenn nach der standardzeit von 20 minuten die session gelöscht wird) - ein delete from in der datenbank gemacht werden - vielleicht kennt php was ähnliches, um sessioneinträge sauber zu entfernen. clientseitig allein ist das jedenfalls nicht machbar.

s'Amstel

Also ich benutze PHP und JavaScript. Habe irgendwo gelesen dass es möglich ist, dass sich beim Schließen des Browser ein POPUP-Fenster für eine Sekunde öffnet (JavaScript)... Welches dann ein anderes Script (PHP) aufruft, welches dass dann den Eintrag löscht... NUr wie das Funktionieren soll... Keine Ahnung!!!

Und bei Popup-Blockern ist dennoch Feierabend. :-)

Viele Grüße

:D Torsten

was ich nicht ganz verstehe, warum prüfst du beim Login ob schon eine Session existiert, wenn beim schließen des Fensters diese beendet werden soll ?

bei einem neuen Login sollte die alte Session einfach überschrieben und somit beendet/gelöscht werden.

Habe irgendwo gelesen dass es möglich ist, dass sich beim Schließen des Browser ein POPUP-Fenster für eine Sekunde öffnet (JavaScript)... Welches dann ein anderes Script (PHP) aufruft, welches dass dann den Eintrag löscht...
Natürlich gibt es diese Möglichkeit. Dass es nicht das eleganteste ist lassen wir einfach mal aussen vor, aber es ist wie jede clientseitige Operation: Du kannst nicht sicherstellen, dass sie tatsächlich ausgeführt wird - Punkt.

Einfachster Fall: Was machst du, wenn ich JavaScript ausgeschaltet habe und/oder einen Popuop-Blocker verwende? Umgehen? Viel Spaß. Was machst du, wenn ich Lynx verwende? Was machst du, wenn ich eine Browser-Session nur simuliere?

JavaScript und Co. bieten sicherlich sinnvolle Möglichkeiten, allerdings hören diese sinnvollen Möglichkeiten da auf, wo solche clientseitige Operationen serverseitige Logiken beeinflussen.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.