ホームページ  >  記事  >  バックエンド開発  >  PHP を使用して、複数のユーザーが 1 つのアカウントに同時にログインできないようにするにはどうすればよいですか?

PHP を使用して、複数のユーザーが 1 つのアカウントに同時にログインできないようにするにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-10-22 00:14:092268ブラウズ

変更要件: アカウントにログインした後、他のユーザーはそのアカウントに再度ログインできます。 QQ 異常ログインと同じように、現在のアカウントは強制的にオフラインになります。誰か具体的な実装アイデアを教えてください。 ?

返信内容:

変更要件: アカウントにログインした後、他のユーザーはそのアカウントに再度ログインできます。 QQ 異常ログインと同じように、現在のアカウントは強制的にオフラインになります。誰か具体的な実装アイデアを教えてください。 ?

トークンを生成してデータベースに保存し、セッションに書き込みます。操作中にセッショントークンとデータベースを比較し、異なる場合はログアウトします。

「他のユーザーがこのアカウントに再度ログインすると、現在のアカウントは強制的にオフラインになります」

これは、時間内に行うか、リフレッシュ(http リクエストを再度送信する)後に行うかです。

前者はソケットやハートビート パケットのような長い接続を必要とします。
@xfspace は、次以降の操作についても明確にしました。

ログインするたびに、Cookie検証用にランダムなトークンが生成されます。

ログインごとに生成されるトークンも異なります。
ただし、ユーザーが直接コピーした場合は無効になることに注意してください。クッキーをローカルエリアネットワークに挿入し、別のコンピュータのブラウザで使用すると、サーバー側を特定するのが困難になります。

それほど面倒ではありません。

1. 新しいトークンテーブルを作成します。
フィールド: token (トークン、通常は 8 つのランダムな文字列で十分です)、uid (このサイトのユーザー ID)、expiresIn (有効期限)

ユーザーがログインに成功すると、レコードが挿入され、ユーザーの以前のすべてのトークン データが期限切れになるか削除されます。これにより、有効なトークンが同時に 1 つだけアクティブになることが保証され、繰り返しのログインが防止されます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。