我有一个用 codeIgniter 编写的 PHP 应用程序。从客户那里收到一些关于应用程序超时的投诉。他们的会话在两个小时不活动后超时,他们似乎不记得了。
有没有办法,如果有,如何在用户会话超时时显示弹出消息?
先感谢您。
我有一个用 codeIgniter 编写的 PHP 应用程序。从客户那里收到一些关于应用程序超时的投诉。他们的会话在两个小时不活动后超时,他们似乎不记得了。
有没有办法,如果有,如何在用户会话超时时显示弹出消息?
先感谢您。
PHP
无法自行显示弹出窗口,但您可能会JavaScript
查询会话状态并在会话过期时显示弹出窗口,或者更好的是,计算会话打开以来的时间并提前让用户知道他的会话即将超时
如果您想更改会话的持续时间,请在您的config.php
$config['sess_expiration'] = 7200;
7200 是 120 分钟 * 60 秒。如果将其更改为0
,会话将不会过期。
要添加警告,最简单的方法可能是添加JavaScript
类似于
setTimeout(function(){alert("Your session will expire in 5 minutes")},6900000); // 6900 seconds (115 minutes) * 1000 milliseconds
你可以这样做:
$_SESSION
并计算时间戳的差异(当用户被重定向到登录页面时,传递一条消息“您的会话已超时”)您甚至可以为不同的用户组提供不同的超时时间......
一个使用 PHP 的示例,它将他们注销,告诉他们并在他们重新登录后重定向:
// get time now
$now = time();
// Set session period
$autologout = '7200';
if (isset($_SESSION["TimeOut"]))
{
if ($now > $_SESSION["TimeOut"])
{
// Unregister session and set message
session_unregister("authenticatedUser");
session_register("loginMessage");
$loginMessage = "Your session has timed out";
// Capture request URL and store in a cookie so that they
// are logged back into the page they were requesting
$requestURL = $_SERVER[REQUEST_URI];
setcookie("requestURL",$requestURL,"0",'/','',FALSE,TRUE);
// Redirect back to login page
header("Location: " . $loginScript);
exit;
} else {
$_SESSION['TimeOut'] = ($now + $autologout);
}
} else {
$_SESSION['TimeOut'] = ($now + $autologout);
}
这假定您的系统会话超时时间更长或以其他方式设置。它也不是为 codeIgnitor 编写的,但希望有助于理解可以做些什么来减轻会话到期的打击。
可能您的会话 maxlifetime 是 2 小时。您可以使用以下命令对其进行编辑:(将 8 替换为以小时为单位的最大生命周期)。
ini_set(’session.gc_maxlifetime’, 8*60*60);