登录时间不保存在会话中

时间:2016-03-18 07:45:19

标签: php session

我正在尝试在会话数组中保存用户登录时间,以便稍后我可以计算注销时间。 我的login_success文件在会话中成功节省了时间,但其余两个文件在会话中没有保存相同的时间。 请帮我找出问题。

login_success.php

$sql2 = "SELECT DATE(login_time) AS date_part, TIME(login_time) AS time_part FROM log where username = '$USERNAME' ";
$res = mysqli_query($link, $sql2);

while ($row = mysqli_fetch_array($res))
{
    echo $row['time_part'];
    $_SESSION['time'] = $row['time_part'];

}

的login.php

if(isset($_GET['action']) && $_SESSION['time'] )
{
    session_destroy();

    $start_time = $_SESSION['time'];
        $life = time() - $start_time;
        $_SESSION['life'] = $life;
        header('location:session_life.php?act=life');
}

session_life.php

<?php
include_once './include/db_connection.php';
session_start();
print_r($_SESSION);
if(isset($_GET['act']))
{
    if(isset($_SESSION['life']))
    {
        $lifee = $_SESSION['life'];
        print_r($lifee);
    }
}

1 个答案:

答案 0 :(得分:2)

当您在login.php脚本中致电session_destroy()时,您必须再次致电session_start()才能再次使用$_SESSION个变量。

  

session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。

来源:php.net

在评论部分,您还提到您的时间格式与您希望的不同。

由于您使用的time()函数返回自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数测量的当前时间,并且您正在以此格式减去两个值,相同格式的差异。

有了这些知识,您可以将其重新计算为您感兴趣的真正价值。有关此主题的更多阅读,请尝试查看这些链接&amp;问题:

编辑:将时间戳差异转换为小时:分钟:秒

$timeStampDifference = 1458290809;
echo gmdate("H:i:s", ($timeStampDifference/1000000)); // This should do the trick