2017-09-06 15 views
0

私は、ユーザーがログイン、ログアウトなどできるWebサイトを持っています。私はそれが1つのデバイスにしかログインできないようにしたいので、すでにログインしているエラーが発生します。ユーザーが他のデバイスにログインしていることを確認してください

私はログインして各ユーザーのブラウズページで1に更新する「オンライン」テーブルを作成しましたが、誰かがログアウトせずにページを出たときにどのようにして0にするのですか?誰かがMySQLのタイマー機能について話しているのを聞いたことがありますが、どのように機能しますか?そのため、300秒間使用しないと0にオンラインに設定されます。

+0

実際にはフラグは必要ありません。あなたはユーザーがログインしているかどうかを決定するためにlast_active時間をチェックすることしかできません –

答えて

1

通常、データベース内のレコードが更新されるたびに、ユーザーはそれらが生きていることを示すアクションを実行します。あるいは、少なくともページを開いたことを示す何らかの通常のAJAX呼び出しを介して可能性があります。

それは一般の形式です:あなたが持っているセッション情報に基づいてその値のため、ユーザーのIDを提供することができます

UPDATE users SET visited_at=NOW() WHERE id=? 

+0

ああ、本当にありがとう、私はそれについてこのように考えなかった!やってみます。 –

+0

これを追加すると、明らかに分かりにくいかもしれないので、データベースの時間があなたの選択した時間(E.G 15分、10分など)よりもずっと前かどうかを確認することができます。 @ErikvanderWoning – GrumpyCrouton

+0

ここではいくつかの注意点があります。たとえば、セッションを電話からデスクトップへ、またはその逆にハンドオフするときなど、複数のデバイスで正当に使用する方法があります。そのため、この制限については非常に不快にならないようにしてください。人々を怒らせるだけです。これらの状況を処理するために、しきい値ではなく2にしきい値を設定することもできますが、複数のセッションを追跡することはややこしいことがあります。 – tadman

0

私の理解限りでは、データベースに "isLogged"という列を作成し、trueまたはfalseに設定することができます。ユーザーがセッションを開始または終了すると、

+0

あなたはどのように誰かがブラウザを離れてブラウザをクリックしたときにfalseに設定しますか? –

+0

mysqlでセッションタイムアウトを設定することができます.SETセッションwait_timeout = 60 –

関連する問題