0

在用户登录时,我想检查当前时间并将其与 JSP(JAVA)中的先前登录时间进行比较。我将每次登录时的时间都存储在数据库中。现在我想这样做只是将登录时间与以前登录时间的平均值进行比较,如果时间与用户通常的登录时间相似,则返回 true。否则返回假。谁能建议我一个很好的功能来做到这一点。我的代码如下,

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.从 db 获取正常时间。
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。否则为假。感谢所有试图帮助我的人。

于 2013-03-29T19:32:09.650 回答