我在登录页面上有这个:
$current_time = date("g:i A");
$current_date = date("l, F jS, Y");
mysql_query("UPDATE employees
SET last_login = '$current_time', last_login_date = '$current_date' WHERE username='$username' AND password='$password'");
然后在用户登录的页面上(受保护的页面)我有这个:
[...]
<?php
$last_login_date = $info['last_login_date']; // get last_login_date from mysql table
$last_login_time = $info['last_login_time']; // get last_login_time from mysql table
?>
[...]
You last signed in on <?php echo $last_login_date; ?> at <?php echo $last_login_time; ?>.
但这不能正常运行,因为它显示了他们刚刚登录的时间。如何让它显示他们上次登录的时间?
我甚至尝试在表格中添加prev_login_time
和prev_login_date
,但我不知道如何正确更新,因为每次登录时都会更新,以便显示时间他们刚登录。(所以它会向他们显示当前时间)
感谢。
这是设置最后一个IP地址会话变量的登录if语句:
if($_POST['submit']) {
$sql = "SELECT * FROM employees WHERE username='$username' and password='$password'";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
$info = mysql_fetch_array($result);
if($count == 1) {
$_SESSION['loggedin'] = 1;
$_SESSION['user'] = $username;
$_SESSION['last_login_time'] = $info['last_login'];
$_SESSION['last_login_date'] = $info['last_login_date'];
$_SESSION['last_ip'] = $info['last_login_ip'];
$return = $_SESSION['returnurl'];
if(!$return) {
$return = "/employee/";
}
date_default_timezone_set('America/New_York');
$current_time = date("g:i A");
$current_date = date("l, F jS, Y");
$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("UPDATE employees
SET last_login = '$current_time', last_login_date = '$current_date', last_login_ip = '$ip' WHERE username='$username' AND password='$password'");
header("Location: $return");
exit();
}
上次登录日期和时间正常,这就是为什么我不知道为什么它不使用IP的原因。我在受保护的页面上正确访问它:
$last_login_date = $_SESSION['last_login_date'];
if($last_login_date = date("l, F jS, Y")) {
$last_login_date = "Today";
}
$last_login_time = $_SESSION['last_login_time'];
if($_SESSION['last_ip'] != $_SERVER['REMOTE_ADDR']) {
$last_login_ip = "this IP address (".$_SERVER['REMOTE_ADDR'].")";
}
else {
$last_login_ip = "IP address ".$_SESSION['last_ip'];
}
echo "Last account login: ".$last_login_date." at " . $last_login_time . " from " . $last_login_ip . ".";
我做错了吗?也许我没有设置会话变量或正确检索它?但看起来我好像。我希望你能提供帮助。提前致谢。
答案 0 :(得分:5)
您需要在更新数据库之前将数据库中的表中的登录时间提取到$info
数组中,并使用新数据覆盖时间。然后,您将在$info
数组中拥有之前的登录时间(如果您希望在许多不同的页面加载中运行它,则可以将其放在session variable中)。