Heim > Artikel > Backend-Entwicklung > Wie kann ich mit PHP verhindern, dass sich mehrere Benutzer gleichzeitig bei einem Konto anmelden?
Änderungsbedarf: Nach der Anmeldung bei einem Konto können sich andere Benutzer erneut bei dem Konto anmelden! Das aktuelle Konto wird offline geschaltet, genau wie die abnormale Anmeldung bei QQ. Kann mir jemand eine konkrete Implementierungsidee geben? ?
Änderungsbedarf: Nach der Anmeldung bei einem Konto können sich andere Benutzer erneut bei dem Konto anmelden! Das aktuelle Konto wird offline geschaltet, genau wie die abnormale Anmeldung bei QQ. Kann mir jemand eine konkrete Implementierungsidee geben? ?
Generieren Sie ein Token, speichern Sie es in der Datenbank und schreiben Sie es in die Sitzung. Vergleichen Sie während des Betriebs das Sitzungstoken mit der Datenbank. Wenn sie unterschiedlich sind, melden Sie sich ab.
„Wenn sich andere Benutzer erneut bei diesem Konto anmelden! Das aktuelle Konto wird offline geschaltet“
Hier möchten Sie es rechtzeitig oder nach der Aktualisierung (erneutes Senden einer http-Anfrage) erhalten.
Ersteres erfordert eine lange Verbindung wie einen Socket oder ein Heartbeat-Paket.
@xfspace hat auch den nächsten oder späteren Vorgang klarer gemacht.
Jedes Mal, wenn Sie sich anmelden, wird ein zufälliges Token zur Cookie-Verifizierung generiert.
Unterschiedliche Anmeldungen generieren unterschiedliche Token, sodass die zuvor generierten Cookies natürlich ungültig werden Kopiert das Cookie direkt und fügt es zur Verwendung in den Browser eines anderen Computers ein. Es ist schwierig, die Serverseite zu identifizieren
1. Erstellen Sie eine neue Token-Tabelle.
Felder: token (Token, normalerweise reichen 8 zufällige Zeichenfolgen), uid (Benutzer-ID dieser Site), ExpiresIn (Ablaufzeit)
Wenn sich ein Benutzer erfolgreich anmeldet, wird ein Datensatz eingefügt und alle vorherigen Token-Daten des Benutzers sind abgelaufen oder gelöscht. Dadurch wird sichergestellt, dass immer nur ein gültiges Token gleichzeitig aktiv ist, wodurch wiederholte Anmeldungen verhindert werden.