我正在尝试在会话数组中保存用户登录时间,以便稍后我可以计算注销时间。 我的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);
}
}
答案 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