0

ユーザーログインに基づいてプログラムを保護しています。現在、プログラムにログインできるのは 1 人のユーザーのみです (Windows Live MSN のように見えます)。すでにログインしている同じユーザー名が検出された場合、ユーザーに「既にログインしています」というメッセージが表示されます。

この設定では、プログラムがクラッシュした場合 (ユーザーがまだログアウトしていないことを意味します) に問題が発生しました。この場合、user_Status を 0 に自動リセットするにはどうすればよいですか? そのため、彼はプログラムを再起動した後にログインできます。

そうしないと、user_Status が 1 になり、ユーザーが再度ログインできない場合があります。

問題を解決する最善の方法は何ですか?

p/s: user_Status = 1 はまだログイン中です。user_Status = 0 はまだログアウト中です

user_Status はデータベースに保存されます。

4

1 に答える 1

1

私はあなたがクライアント/サーバーの部分を持っていると思います。その場合、ユーザーがすでにログインしている場合は、ログイン時にサーバーからユーザーにpingを実行する関数を作成します。

シナリオ1:ユーザー1がログインし、アクティブになっています。ユーザー2は、ユーザー1の資格情報を使用してログインしようとします。サーバーはユーザー1にpingを実行し、アクティブな応答を取得します。ユーザー2は「あなたはすでにログインしています」というメッセージを受け取ります

シナリオ2:ユーザー1がログインした後、クラッシュします。ユーザー1が再起動し、再度ログインを試みます。サーバーはユーザー1にpingを送信しますが、応答がないため、サーバーはログインを許可します。

このように、タイマーを設定する必要はなく、ユーザーは5分待ってから再度ログインする必要がありません。

于 2012-09-18T14:08:57.597 に答える