当会话到期并且用户自动注销时,我正试图将我的网站重定向到主页(现在它被重定向到joomla核心注册页面,我不希望用户看到它,因为我已经在自定义组件中创建了自己的注册页面)。
在我模板的index.php文件中,我检查会话是否处于活动状态,并在会话过期时执行重定向:
$session = JFactory::getSession();
if (!$session->isActive()) {
echo "session is expired";
header('Location: http://www.example.com/');
exit;
}else{
echo "session is active";
}
这个解决方案一直运行良好,直到我更新到Joomla 3.4.5。更新后,即使用户自动注销,它的行为也就像会话仍然处于活动状态一样(我通过echo"session is active"行检查,如您所见)。
为什么即使用户已注销,会话仍处于活动状态?有没有$session->isActive()方法的替代方法?
由于浏览器未关闭,会话处于活动状态。请使用此:$user= JFactory::getUser();$app = JFactory::getApplication();
if ($user->id) {echo "session is active";}else{ $app->redirect('http://www.example.com','User logged out');exit; }