0

ユーザーのログイン時に、現在の時刻を確認し、JSP(JAVA)で以前のログイン時刻と比較したい。データベースにログインするたびに時間を保存しました。ここで、ログイン時間を以前のログイン時間の平均と比較し、時間がユーザーの通常のログイン時間とほぼ同じであれば true を返したいと思いました。それ以外の場合は false を返します。誰かが私にそれを行うための良い機能を提案できますか? 私のコードは以下の通りです、

public boolean login_checking(String username) {
    public boolean login = false;
    try {
        PreparedStatement ps = con.prepareStatement("select (case when ((timediff(time(now()),time(accesstime)))<'02:00:00') then 1 else 0 end)from tbl_login_history where uid = ?");
        ps.setString(1, username);
        ResultSet rs = ps.executeQuery();
        if (rs.first()) {
         //   login = rs.getInt(1) < 0;
         //   System.out.println(rs.getInt(1));
        }
        else
        {
            System.out.println("Not exist");
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return login;
}
4

2 に答える 2

0

これを試すことができます。

ユーザーがログインすると、通常の時間などの名前の列があります

1.データベースから通常時間を取得します。
2.空の場合は、db に挿入します。
3.空でない場合は、現在の時刻を取得し、通常の時刻がそれに近いかどうかを確認します。
4. 近い場合、通常時間 = (通常時間 + 現在時間)/2、db の新しい通常時間を更新し、true を返します
。 5. 近くない場合、db を更新せず、false を返します。

于 2013-03-28T15:17:39.827 に答える
0

コードを修正しました。上のクエリを次のように変更するだけです。

SELECT (select count(*) from tbl_login_history where hour(accesstime) between 4 and 12 AND uid=?),(select count(*) from tbl_login_history where hour(accesstime) between 13 and 19 AND uid=?),(select count(*) from tbl_login_history where hour(accesstime) between 19 and 1 AND uid=?);

このクエリでは、時間を 3 つの異なるゾーンに分割し、各ゾーンでのログイン数をチェックします。より正確な時間が必要な場合は、時間をさらに多くのゾーンに分割できます。私のシステムでは 3 で十分です。次に、ユーザーがどのゾーンからより多くログインしているかを確認します。ユーザーが現在通常のタイム ゾーンでログインしている場合は、true を返します。それ以外の場合は false。私を助けようとするすべての人に感謝します。

于 2013-03-29T19:32:09.650 に答える