问题是,当我的会话过期时,我必须重新加载页面两次才能返回到登录页面。 这里是我的.htaccess文件PHP会话过期但页面刷新后我没有重定向
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框架,我在控制器__construct功能
function __construct() {
parent::__construct();
Auth::handleLogin();
}
最后这里是handleLogin调用handleLogin()()函数中
public static function handleLogin() {
@session_start();
if (isset($_SESSION['loggedIn'])) {
$logged = $_SESSION['loggedIn'];
} else {
session_destroy();
header('location: ' . URL . 'login');
exit;
}
}
当会话过期后,我需要更改重定向用户到登录页面后FIRST刷新?
在此先感谢!
P.S.我运行它在Debian
更新:这里是注销功能,并能正常工作,当用户点击它他immidiately重定向到登录页面
function logout()
{
session_destroy;
header('location: ' . URL . 'login');
exit;
}
更新#2我得到了一些截图很好的解决问题说明
1)当会话处于活动状态,一切工作正常
2)会话过期 - 用户点击链接或刷新页面(第一次刷新后) ,你可以在Firebug登录发现使用的是默认php.ini设置(会话有效期时加载,但第二次刷新后网页不会显示
3)
一件事是..: 1440秒)everthing正常工作没有问题重定向
你能告诉我们你已经到位的代码到期吗? – Jonathon
你好朋友,首先感谢你的时间!我不确定我是否理解你的问题,但会话过期时间是通过.htaccess文件'php_value session.gc_maxlifetime 5'设置的。我没有任何特定的代码来检查会话是否过期。我必须手动检查它吗?我认为gc_maxlifetime会完成这项工作.. –