4

同じユーザーが別の場所から複数回ログインすることを制限したい。同じ/最近の異なる場所からのユーザーの複数のログインを特定するにはどうすればよいですか? テーブル内のいくつかのフラグと IP チェックが可能な解決策になると思いますが、より良い解決策はありますか?

更新: 単一のマシンの場合、セッションまたは Cookie が役立つと思います。ユーザーが初めてログインするときと同様に、アクティベーション キーを作成して保存し、ユーザーがそのマシンにログインするたびに、Cookie の値を確認します。同じく。

4

5 に答える 5

4

ユーザーテーブルにactiveKey列を作成することで、そのような問題を解決します。ユーザーがログインするたびに、activeKey が変更され (簡単な方法で subchar(md5(time().$username), 0, 16))、セッションに保存されます。Web ページが更新されるたびに、または入力されたキーがチェックされます。一致しない場合は、info でログアウトします。正しいログアウトでは、キーは NULL に設定されるため、フラグを立てることができます。

このメソッドは IP アドレスと組み合わせることができますが、MAC と同じように、IP アドレスだけをだますことができます。

それが主な考え方です。最後のログイン日、IP の最後のログイン日などの追加データが存在する可能性があります。

于 2012-04-19T09:38:05.110 に答える
3

現在ログインしているユーザーの ID と IP アドレスを含むテーブルを作成できます。誰かがログインするたびに、このテーブルを確認してください。

于 2012-04-19T09:10:42.247 に答える
2

これは、データベースへの常時アクセスを必要としないソリューションです...

(これにより、ページをリクエスト/更新するたびにデータベースの値に対して session_id() をチェックする必要がなくなり、データベース/サーバーのストレスが軽減されます)...

1.ログイン時に、このユーザーの DB に保存されている既存の session_id を取得し、次のようにします。

session_id("the pre-existing session id in the database goes here");
session_start();
session_destroy();

2.次に、新しいセッションを開始し、この新しい session_id をデータベースに保存して、以前のものを上書きします。これにより、アクティブなユーザーが 1 人いる場合、このユーザーの前のセッションがログアウトされます (このアカウントを使用している他のユーザーを効果的にログアウトします)。

試してみて、それがうまくいくかどうか教えてください!!

注:まだ試していないので、これは「理論上」です。これは、この受け入れられた stackoverflow answerに基づいています。そして、おそらく、各ユーザーに固有のものに基づいて session_id を手動で作成する必要があります。そうすれば、他の誰かが使用しているセッションが、たまたまチェックしているユーザーが最後に使用したセッションと同じであることを消去しません。為に。

于 2013-05-21T22:13:00.963 に答える
1

I think, just have extra 2 columns for each user - "LastLoginTime" and "IPAddress" in your Users table. If the duration is too short and IPAddress vary then you can give a warning to the user. Additionally you can also inform the City & Country from which the user is logged in.

于 2012-04-19T09:16:10.180 に答える
0

ユーザー テーブルに ipAddress 列、LastLogin 日付列、ブール値 (実際には MySQL はブール値に 1/0 を使用) を持つ LogStatus 列を追加して、ユーザーがログインしているかどうかを確認します。プロキシを使用してバイパスされます) と、ユーザーがブロックされているかどうかを確認する 1/0 の値を持つ、blockedStatus 列です。

次に、ログインページで、ユーザーがログインしているかどうかを確認し、ログインできない場合、最近ログインした場合、国が異なる場合、何かが発生しているため、アカウントをブロックして送信する必要があります正当なユーザーがログインしている場合、アカウントのブロックを解除するためのリンクが記載された電子メール。

于 2012-04-19T09:27:45.363 に答える