2

ユーザーのログイン履歴を自分のサイトに保存したい。

テーブル:

mysql> desc user_stat;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | varchar(64) | YES  |     | NULL    |       |
| login  | varchar(64) | YES  |     | NULL    |       |
| logout | varchar(64) | YES  |     | NULL    |       |
| diff   | varchar(64) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

ユーザーがログインすると、挿入を実行します。

insert into user_stat(id,login) values('".$id."','".NOW()."');

しかし、ログアウトの状況は混乱します。ユーザーが 2 つの差分ブラウザーで twise にログインした可能性があるため。では、どうすれば時間を維持できるlogoutでしょうか?セッション管理のようなものです(ただし、ログインログアウトにセッション変数を使用していません)。私が使用したログインログアウト用のJS SDK:http://jsfiddle.net/YCFpH/

diffまた、列のログアウト時間とログイン時間の差を取得するにはどうすればよいですか?

1 つの方法は、データ時間の文字列を数値に変換し、その差を取得することです。しかし、私はその方法を知りません。

データ時間差の他の解決策はありますか?

4

1 に答える 1

1

しかし、ログアウトの状況は混乱します。ユーザーが 2 つの差分ブラウザーで twise にログインした可能性があるため。では、どうすればログアウト時間を維持できますか?

各ログインには、何らかのセッション識別子が必要です。そうしないと、ログアウト時間を正しいログイン時間と適切に関連付けることができなくなります。これを取得する方法はいくつもありますが、それは Web サーバー プラットフォームによって異なります。少なくとも、クライアントで uid を作成し ( Create GUID / UUID in JavaScript?を参照)、ユーザーがログアウトするときに uid を渡すことができます。

さらに、差時間でソートまたは結合しない場合、ログインとログアウトはおそらく日時データ型である必要があり、差は保存するのではなく、必要なたびに単純に計算されます。例えば。

    set @time1 = now();
    set @time2 = date_add(now(), interval 30 second);

    select @time1, @time2, (timediff(@time1,@time2))

これで、時間の差が秒単位で取得されます。

2013-12-26 14:17:32 2013-12-26 14:18:02 -00:00:30
于 2013-12-26T19:02:48.060 に答える