Nur eine Sitzung gleichzeitig zulassen

7

Ich möchte meine Website so gestalten, dass nur jeweils eine Sitzung möglich ist. Nehmen wir zum Beispiel an, dass sich der Benutzer bei Firefox auf meiner Website angemeldet hat. Wenn sich der Benutzer erneut bei einem anderen Browser wie Opera auf demselben Computer oder einem anderen Computer anmeldet, wird die Sitzung auf Firefox zerstört. Die Sitzung auf Firefox blieb jedoch, wenn es als eine Sitzung verbleibt. Darf ich wissen, wie kann ich das tun? Ich benutze PHP und Apache. Danke.

Grüße. Benjamin

    
davidlee 02.07.2010, 09:23
quelle

5 Antworten

10

Ich schlage vor, dass Sie so etwas tun sollten:

Angenommen, der Benutzer "A" meldet sich zum ersten Mal in "Com_1". Speichern Sie einen eindeutigen Code in der Datenbank für diese Sitzung und für die Benutzersitzung.

Wenn er (Benutzer "A") sich zu einem späteren Zeitpunkt wieder bei "com_2" einloggt, überprüft er seinen Status in der Datenbank und aktualisiert den eindeutigen Code in der Datenbank.

wieder zurück, wenn der gleiche Benutzer (Benutzer "A") die Seite auf "com_1" aktualisiert, müssen wir nur den eindeutigen Code aus der Sitzung überprüfen und ihn mit der Datenbank abgleichen. Es ist sicher, dass es nicht funktioniert match, dann abmelden und die Sitzung zu zerstören.

Damit der Benutzer angemeldet bleibt, auch wenn der Browser geschlossen ist, können Sie den Cookie im Browser speichern und die Sitzung entsprechend neu generieren.

Hoffe, das hilft. Danke.

    
Chetan Sharma 03.07.2010, 07:17
quelle
5

Sie können den folgenden Algorithmus verwenden

  1. Erstellen Sie ein Integer-Feld in der Datenbank userLoggedInCount
  2. Bei jedem Login-Inkrement, das das Ergebnis in der Sitzung markiert und speichert.
  3. Überprüfen Sie bei jeder Anfrage den Wert in der Datenbank und den in der Sitzung, und wenn der Wert in der Sitzung kleiner als der in der Datenbank ist, invalidate() die Sitzung und dekrementieren Sie den Wert in der Datenbank
  4. Wenn eine Sitzung zerstört wird, dekrementieren Sie auch den Wert

Dank an Bozho, weil er dies gepostet hat und auf eine Frage geantwortet hat here

    
pakore 02.07.2010 09:29
quelle
3

Behalten Sie eine zentrale Datenbanktabelle oder Textdatei mit, wer gerade angemeldet ist. Wenn ein Benutzer bereits in einer anderen Sitzung angemeldet ist, deaktivieren Sie diese Sitzung, indem Sie das Flag "angemeldet" auf false setzen.

    
Pekka 웃 02.07.2010 09:28
quelle
3

Ich denke, Sie müssten so etwas tun:

  • Fügen Sie Ihrer Benutzertabelle eine Spalte "last_session_id" hinzu
  • Wenn sich ein Benutzer anmeldet, aktualisieren Sie das Feld last_session_id mit seiner aktuellen Sitzungs-ID
  • Überprüfen Sie auf jeder Seite, ob der Benutzer eine authentifizierte Sitzung hat, ob die Sitzungs-ID mit der in Ihrer Datenbank gespeicherten identisch ist. Wenn nicht, zerstöre diese Sitzung.
Arkh 02.07.2010 10:38
quelle
0

Speichern Sie die IP = & gt; SESSION_ID der Benutzer in einer Datenbank. Wenn Benutzer versuchen, Ihre Seite zu laden, müssen Sie das tatsächliche Paar IP = & gt; SESSION_ID vergleichen und dann zulassen / ablehnen, wenn das Paar in Ordnung / anders ist.

    
fabrik 02.07.2010 09:30
quelle

Tags und Links