【问题标题】:Manage Joomla session timeout管理 Joomla 会话超时
【发布时间】:2013-11-08 14:49:37
【问题描述】:

我有一个自定义组件,它有一个简单的表单,我正在努力如何管理会话超时。如果用户点击另一个链接,他们将被 Joomla 自动重定向。他们被重定向到登录组件,并在成功登录后转到他们最后点击的页面。这正是我想要的。

但是问题出在表单上。如果用户超时并且没有意识到,因此他们填写此表单并点击提交,他们将留在同一页面上,并显示默认会话超时消息。为什么不重定向到登录组件?

我想我需要在我的代码中处理这种情况,所以当我提交表单时,它会在我的控制器中调用这个函数:

function process()
{
   $user = JFactory::getUser();     

    if ($user->id)
    {
        //process form
    }
    else //give warning and bring them to a page upon successful login
    {
        JError::raiseWarning( 100, JText::_('You have timed out. Please login again.') );
        JFactory::getApplication()->redirect(JRoute::_('my-account'));
    }

}

但这不起作用,我收到相同的 Joomla 默认会话超时消息。我也尝试获取会话而不是检查用户,但这也不起作用。

$session = JFactory::getSession();
if ($session->isActive()) 
{
    //process form
}
else
{
    JError::raiseWarning( 100, JText::_('You have timed out. Please login again.') );
    JFactory::getApplication()->redirect(JRoute::_('my-account'));

}

有什么想法吗?

【问题讨论】:

    标签: php joomla joomla2.5


    【解决方案1】:

    您可以通过将以下代码添加到表单 HTML 中来防止表单超时:

    <?php
      JHTML::_('behavior.keepalive');
    ?>
    

    【讨论】:

    • 感谢您的回复。但是,表单超时是一件好事。我宁愿弄清楚如何相应地管理它。
    猜你喜欢
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2013-05-17
    • 2017-04-01
    • 2011-07-01
    • 2017-07-01
    • 1970-01-01
    相关资源
    最近更新 更多