• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

doppelten Login verhindern

htmlphp

Mitglied
Nabend,
ich habe eine SQL-Tabelle mit den Benutzerdaten mit denen man sich anmelden kann.
Das funktioniert auch soweit.

Jeddoch ist es möglich, dass sich beliebig viele User mit denselben Daten einloggen.
Ich möchte jeddoch, dass sich nur einer mit den Daten einloggen kann.

Meine erste Idee war eine extra Spalte in der per Boolean steht ob der User schon eingeloggt ist oder nicht.
Da würde aber dann das Problem auftreten, dann die Leute gerne nur das Browserfenster schließen und sich nicht abmelden.

Wie würdet ihr das lösen?
 
Zuletzt bearbeitet:
Werbung:
Bei der Registrierung solltest Du prüfen, ob die E-Mail bzw. der Nutzername bereits existiert. Wenn ja, dann eine Fehlermeldung ausgeben.
 
Das ist klar!
Eine Validierungsmail wird auch verschickt.

Es geht aber und den Log-in wenn man bereits registriert ist und die Mail validiert hat.
2 Leute können sich atm mit den gleichen Daten zur gleichen Zeit einloggen.
Das soll aber verhindert werden.
 
Werbung:
Eine 100% Absicherung wirst du kaum hinbekommen, man kann das nur eingrenzen. Bei jeder Aktivität eines Users, sprich Seitenaufruf, speicherst du einen Zeitstempel in der Datenbank. Loggt man sich nochmal ein, prüfst du die Zeitdifferenz und entscheidest, ob ein Login erlaubt ist, oder nicht. Allerdings hast du damit das Problem, dass du einen User auch für eine Zeit x aussperren kannst, denn wenn er das Fenster schließt und dann den Browser sofort neustartet, hilft dir der Zeitstempel auch nicht. Dies könnte man noch mit einem Cookie eingrenzen, der eine Haltbarkeit von ein paar Sekunden hat. Ist der Keks nicht gesetzt, könntest du ein Login wieder erlauben. Aber wie gesagt, zu 100% geht das nicht.
 
Diese 2 Leute sind aber dann die gleichen Personen, nur an anderen Rechnern oder neuen Browser?
Wenn die Login-Daten unique sind, sehe ich da kein Problem?

Warum willst du das verhindern?
 
Warum willst du das verhindern?

Das ist meiner Meinung nach der Sinn von Benutzerdaten.
Jeder soll seinen eigenen Account haben.
Eine Registrierung ist ja sinnlos, wenn jeder seine Log-in Daten an andere weiter geben kann und diese dann alle mit den gleichen Daten online sind.

Sei es jetzt aus Gründen um User zu sperren die Mist bauen, aus Zahlungstechnischen Gründen usw.
Ich denke es ist sinnvoll, dass Userdaten nur ein mal zur selben Zeit eingeloggt sein können.
 
Werbung:
Aehm nja, ich versteh deine Logik nicht ganz. Was aendert denn das verhindern eines gleichzeitigen Logins an dem Problem, dass einer seine Daten weitergeben kann?

Was machst du wenn einer seine Zugangsdaten weitergegeben hat und sich die Leute NICHT zur selben Zeit einloggen

Ich sehe da keine vernuenftige Loesung. Selbst mit dem Ansatz von bdt die Cookie Lebensdauer stark zu verkuerzen...
Wenn man dann 5 min wartet weil man grade nen Artikel auf ner anderen Seite liest soll man sich wieder neu einloggen muessen?

Selbt auf den Online Banking Seiten kann man sich parallel mit 2 Browsern einloggen...
 
Es geht auch nicht darum, Datenweitergabe zu verhindern.
Dass das kaum zu schaffen ist ist mir bewusst.
Ich wollte nur Ansätze sammeln wie man das gleichzeitige einloggen mit den Selben Benutzerdaten zur gleichen Zeit verhindern kann.
 
Ich arbeite mit einer Art Polling und sammle alle aktiven Sessions in einer Datenbank. Bekomme ich von einem nach 1 Minute keine Antwort (passiert nur, wenn der Browser oder die Seite geschlossen werden), gilt die Session als ausgeloggt. Bei der Rückkehr auf die Seite darf sich der entsprechende Benutzer also wieder einloggen. Je nach Einstellung in der Benutzerverwaltung kann man auch verhindern, dass sich ein Benutzer mehrmals einloggen kann. Dabei ersetzt die neue Session immer die aktive.

Im Prinzip geht das ganz einfach: Du speicherst beim Login die Session in einer Tabelle und setzt ein Feld 'status' auf 'aktiv', sobald eine zweite mit den selben Logindaten kommt, setzt du alle Sessions des gleichen Benutzers auf 'inaktiv' und die neue Session auf 'aktiv'. Bei jedem Seitenaufruf prüfst du nun den Status aus der Tabelle. Ist dieser 'inaktiv', löschst du die Session und wirfst den User auf die Logout-Seite.
 
Zuletzt bearbeitet:
Werbung:
Dieses "anpingen" bräuchte ich auch für meine Idee.
Wie setzte ich das am besten um?
Gibts da schon Klassen etc. für?
Wonach googelt man da am besten?
 
Google mal nach Longpolling bzw. Polling. Solltest es aber nicht damit übertreiben, da es den Server auch stark belasten kann.
 
Verstecktes <iframe> jede Minute neuladen lassen; bei neuer Session an die alte senden: Ausloggen! Dann sorgt das ifre per Jabascript dafür, dass der übergeordnete Frame auf die Ausgeloggt-Seite geleitet wird. Wäre sonst auch möglich.
 
Werbung:
Zurück
Oben