PHP - SESSION - mehrfachlogin - unterbinden - Optimierung?
Guten Morgen zusammen,
ich denke, das Szenario dürfte jedem bekannt sein, mittels Google hab ich dann auch gleich zwei Artikel gefunden:
Access 2010 Wie verhindern, daß ein User eine geteilte DB mehrfach öffnen kann?
Mehrfachanmeldung eines Benutzer auf W2kServer unterbinden??
In einem Webprojekt soll jedes Konto nur einer Person zugeordnet sein und wenn jemand Zugriff haben möchte,
dieser ein eigenständiges beantragen.
Habe gedanklich und im Testmodus folgendes realisiert:
DB Tabelle "online"
darüber wird der sog. online-counter gesteuert
Folgendes wird nach dem Programmablaufplan gemacht:
Account hat eine Sitzung offen
eine weitere Sitzung wird auf den Account geöffnet
alle anderen Sitzungen als die eigene wird in einem Feld ein Zeichen geschrieben
Bei jedem Seitenaufruf wird dieses Kontrollfeld ausgelesen und wenn das Zeichen gefunden wird,
gibt es sofort einen Sicherheitslogout!
Kurz heißt es:
immer die letzt eingeloggte Sitzung gewinnt, alle anderen fliegen immer wieder raus.
Jetzt ist nur die Frage, ob in der online-Tabelle es sinnvoll ist oder eher die user-Tabelle verwendet werden soll.
Letzteres klappt dann nicht, wenn die zuletzt eingeloggte Sitzung bestehen bleibt, da alle Sitzungen den gleichen Datensatz verwenden!
In diesem Sinne,
vielen Dank!
Hier noch ein Thread, der im Schlusszitat genau behandelt, was ich verhindern möchte:
mehrfachlogin gleichzeitig aus verschiedenen pcs verhindern - wie ?
Der "Missbrauch" passiert aber nur bei Usern, die sich in dem selben Account einloggen (weil z.B drei Leute das Login und PW von Account A kennen). Die reslichen Accounts C, D, E etc. bleiben davon unberührt.
ich denke, das Szenario dürfte jedem bekannt sein, mittels Google hab ich dann auch gleich zwei Artikel gefunden:
Access 2010 Wie verhindern, daß ein User eine geteilte DB mehrfach öffnen kann?
Mehrfachanmeldung eines Benutzer auf W2kServer unterbinden??
In einem Webprojekt soll jedes Konto nur einer Person zugeordnet sein und wenn jemand Zugriff haben möchte,
dieser ein eigenständiges beantragen.
Habe gedanklich und im Testmodus folgendes realisiert:
DB Tabelle "online"
darüber wird der sog. online-counter gesteuert
Folgendes wird nach dem Programmablaufplan gemacht:
Account hat eine Sitzung offen
eine weitere Sitzung wird auf den Account geöffnet
alle anderen Sitzungen als die eigene wird in einem Feld ein Zeichen geschrieben
Bei jedem Seitenaufruf wird dieses Kontrollfeld ausgelesen und wenn das Zeichen gefunden wird,
gibt es sofort einen Sicherheitslogout!
Kurz heißt es:
immer die letzt eingeloggte Sitzung gewinnt, alle anderen fliegen immer wieder raus.
Jetzt ist nur die Frage, ob in der online-Tabelle es sinnvoll ist oder eher die user-Tabelle verwendet werden soll.
Letzteres klappt dann nicht, wenn die zuletzt eingeloggte Sitzung bestehen bleibt, da alle Sitzungen den gleichen Datensatz verwenden!
In diesem Sinne,
vielen Dank!
Midi
Hier noch ein Thread, der im Schlusszitat genau behandelt, was ich verhindern möchte:
mehrfachlogin gleichzeitig aus verschiedenen pcs verhindern - wie ?
Der "Missbrauch" passiert aber nur bei Usern, die sich in dem selben Account einloggen (weil z.B drei Leute das Login und PW von Account A kennen). Die reslichen Accounts C, D, E etc. bleiben davon unberührt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 176378
Url: https://administrator.de/forum/php-session-mehrfachlogin-unterbinden-optimierung-176378.html
Ausgedruckt am: 13.05.2025 um 12:05 Uhr
6 Kommentare
Neuester Kommentar
Morgen Midivirus,
weiß nicht genau ob das für dich zutreffend wäre, aber kannst du nicht einfach beim login in deine DB ein Flag setzen von wegen user ist angemeldet. Wenn sich jetzt ein anderer User mit den gleichen Daten anmelden will, kommt eine Fehlermeldung das der User schon angemeldet ist.
Sobald sich der User wieder ausloggt wird das Flag gelöscht/überschrieben und man kann sich wieder anmelden.
Wäre das eine Option?
Gruß
Schlumpf
weiß nicht genau ob das für dich zutreffend wäre, aber kannst du nicht einfach beim login in deine DB ein Flag setzen von wegen user ist angemeldet. Wenn sich jetzt ein anderer User mit den gleichen Daten anmelden will, kommt eine Fehlermeldung das der User schon angemeldet ist.
Sobald sich der User wieder ausloggt wird das Flag gelöscht/überschrieben und man kann sich wieder anmelden.
Wäre das eine Option?
Gruß
Schlumpf
Du solltest auch noch AJAX dazu nehmen, dass immer mal wieder mitteilt, wenn ein User eingeloggt ist und bei einem Fehler ihn sofort ausloggt.
Eine Tabelle würde dann so aussehen:
Wenn sich der User einloggt wird für ihn ein Eintrag mit active=1 angelegt und für alle anderen Einträge mit der selben user_id active=0 gesetzt.
Bei jedem Seitenaufruf wird dann geprüft ob die session_id noch active ist und ggf. der User ausgeloggt.
Alternativ ginge auch die Holzhammer-Methode: PHP speichert ja alle Sessions in einem bestimmten Ordner als
Man könnte also aus der DB alle Session IDs rausziehen und die Dateien auf der Festplatte löschen, damit wäre der User automatisch ausgeloggt (allerdings sollte man dann im $_SESSION-Array ein Flag zur Kontrolle haben).
Eine Tabelle würde dann so aussehen:
- user_id
- lastactivity_time
- session_id
- active
Wenn sich der User einloggt wird für ihn ein Eintrag mit active=1 angelegt und für alle anderen Einträge mit der selben user_id active=0 gesetzt.
Bei jedem Seitenaufruf wird dann geprüft ob die session_id noch active ist und ggf. der User ausgeloggt.
Alternativ ginge auch die Holzhammer-Methode: PHP speichert ja alle Sessions in einem bestimmten Ordner als
sess_SESSIONID
.Man könnte also aus der DB alle Session IDs rausziehen und die Dateien auf der Festplatte löschen, damit wäre der User automatisch ausgeloggt (allerdings sollte man dann im $_SESSION-Array ein Flag zur Kontrolle haben).