在做项目时遇到了一个小需求

需求

大概意思是要检测当前会话是否过期,网上搜了下基本都是用cookies记录的
想了下用Session也可以做

实现

可以在登录时用$_SESSION['Your_Name']存储登录时的时间然后在访问后台每个页面必经的页面加入会话验证函数
大概函数如下
登录页在登录成功后加入:

date_default_timezone_set('Asia/Shanghai');
$time = date('Y-m-d H:i:s');
$_SESSION['login_time'] = $time;

函数中加入

/**
* 检测会话是否过期
*/
function CheckSession()
{
session_start();
date_default_timezone_set('Asia/Shanghai');
$session_time = $_SESSION['login_time'];
$timeout = date('Y-m-d H:i:s');
$logon_out_time = strtotime($timeout) - strtotime($session_time);
if (empty($session_time) || $session_time == '' || $logon_out_time >= 900)//检测是否大于15分钟未响应
{

session_destroy();
sweetalert('会话过期', '当前会话已超时(15分钟未操作),请重新登录', 'warning', '0', '', '返回', 'login', '0', '');
exit();
}
}

/**
* 设置新会话时间
*/
function SetNewSessionTime()
{
session_start();
$_SESSION['login_time'] = date('Y-m-d H:i:s');
}

在必经页面加入函数SetNewSessionTime来证明处于活动状态

......Your Codes
//加载完再做会话验证
CheckSession();
SetNewSessionTime();
.....Your Codes

最后超时效果如下: