在用户登录时,我想检查当前时间并将其与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;
}
答案 0 :(得分:0)
你可以试试这个。
有一个名为normaltime或者其他的列,当用户登录时,
1.从db开始常规时间 2.如果它是空的,插入db。
3.如果没有空,请获取当前时间并检查通常时间是否接近它 4.如果接近,通常时间=(通常时间+当前时间)/ 2,在db中更新新的通常时间并返回true 5.如果不近,请不要更新db并返回false。
答案 1 :(得分: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。否则是假的。 感谢所有试图帮助我的人。