如何显示用户使用MySQL登录的上次登录日期和时间?

时间:2011-10-03 16:25:48

标签: php mysql

我在登录页面上有这个:

   $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_timeprev_login_date,但我不知道如何正确更新,因为每次登录时都会更新,以便显示时间他们刚登录。(所以它会向他们显示当前时间)

感谢。


编辑:[对于EdoDodo]

这是设置最后一个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 . ".";

我做错了吗?也许我没有设置会话变量或正确检索它?但看起来我好像。我希望你能提供帮助。提前致谢。

1 个答案:

答案 0 :(得分:5)

您需要在更新数据库之前将数据库中的表中的登录时间提取到$info数组中,并使用新数据覆盖时间。然后,您将在$info数组中拥有之前的登录时间(如果您希望在许多不同的页面加载中运行它,则可以将其放在session variable中)。