【发布时间】:2013-10-21 08:21:42
【问题描述】:
问题是,当我的会话到期时,我必须重新加载页面两次才能返回登录页面。 这是我的 .htaccess 文件
php_flag display_errors on
php_value error_reporting 9999
RewriteEngine On
Options -MultiViews
AddDefaultCharset UTF-8
php_value session.gc_maxlifetime 5
php_value session.gc_divisor 1
php_value session.gc_probability 1
php_value session.cookie_lifetime 5
php_value session.save_path /path/to/session/folder
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
我正在使用一些自定义 MVC 框架,并且我正在控制器中调用 handleLogin() 函数 __construct 函数
function __construct() {
parent::__construct();
Auth::handleLogin();
}
最后是handleLogin()函数
public static function handleLogin() {
@session_start();
if (isset($_SESSION['loggedIn'])) {
$logged = $_SESSION['loggedIn'];
} else {
session_destroy();
header('location: ' . URL . 'login');
exit;
}
}
会话到期时,在第一次刷新后,我需要更改什么以将用户重定向到登录页面?
提前致谢!
附:我在 Debian 上运行它
更新:这里是注销功能,它工作正常,当用户点击它时,他会立即重定向到登录页面
function logout()
{
session_destroy;
header('location: ' . URL . 'login');
exit;
}
更新 #2 我得到了一些截图以便更好地描述问题
1) 当会话处于活动状态并且一切正常时
2) 会话过期 - 用户点击链接或刷新页面(第一次刷新后) 正如您在 firebug 登录中注意到的那样,已加载但未显示
3) 第二次刷新后
还有一件事是.. 当使用默认 php.ini 设置(会话生命周期:1440 秒)时,一切正常,重定向没有问题
【问题讨论】:
-
您能否向我们展示您为使会话过期而准备的代码?
-
朋友您好,首先感谢您的宝贵时间!我不确定我是否理解您的问题,但会话到期时间是通过 .htaccess 文件
php_value session.gc_maxlifetime 5设置的。我没有任何特定的代码来检查会话是否过期。我必须手动检查吗?我认为 gc_maxlifetime 会完成这项工作..
标签: php .htaccess session model-view-controller