我正在使用php创建在线考试应用程序的登录页面。我已经成功创建了一个登录页面。我正在维护一个单独的表来跟踪用户登录详细信息,例如用户名,登录日期等,我需要的是,如果用户在一天内登录该页面两次,则需要将用户定向到另一个页面,例如xxx.php。是否有可能获取当前日期并使用登录跟踪表详细信息enter code here
进行验证。
$today = getdate();
我希望我可以使用以下查询获取最近记录的日期,
$qry_trace="
SELECT l_date FROM trace
WHERE u_name='$session_username'
order by l_date desc
";
$result_trace=mysql_query($qry_trace);
如何验证当前日期和用户的上次登录日期。
有很多
方法可以实现它。
- 我假设您将"日期时间"或"时间戳"保存在"TRACE"表中。仅仅存储日期不会很好
- 在 PHP 中 - date("Y-M-d", strtotime("now"((;将以 YYYY-MM-DD 格式为您提供当前日期
- 在MySQL中 - DATE('datetime_columnname'( - 将以YYYY-MM-DD格式为您提供日期。现在,您可以通过执行查询并与PHP进行比较来进行比较
最好的方法是使用 MySQL 功能本身进行比较,而无需再次将其与 PHP Date 进行比较,例如
SELECT *, DATE(l_date) < DATE(NOW()) AS logged_today FROM trace WHERE u_name='$session_username' ORDER BY l_date DESC LIMIT 1
您甚至可以参考以下一些链接:
- http://www.richardlord.net/blog/dates-in-php-and-mysql
- PHP 日期与 MySQL 日期字段的比较
希望这应该对您有所帮助。
仅将上次登录日期保存在数据库中。如果用户在同一天再次登录,查询将返回一行,在这种情况下,您可以返回到第 xxx 页.php
跟踪表结构如下所示
|用户名 | last_login_date |
查询就像
$qry_trace="SELECT * FROM trace WHERE u_name='$session_username' AND last_login_date = "$today";
$result_trace=mysql_query($qry_trace);
if(mysqli_num_rows($result_trace) > 0)
// go to xxx.php
else
// normal login
您可以使用
time(( 获取当前
时间戳$current_time = time();
$before_24_hours = $current_time - (60 * 60 * 24);
您的查询将如下所示
$sql = "SELECT count(l_date) FROM trace WHERE u_name='$session_username' AND l_date < "'.$currentTime.'" AND l_date > "'.$before_24_hours.'"";
注意:首先,您需要记录时间戳而不是存储日期。