在做项目时遇到了一个小需求
需求
大概意思是要检测当前会话是否过期,网上搜了下基本都是用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) {
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
|
最后超时效果如下: