簡體   English   中英

管理Joomla會話超時

[英]Manage Joomla session timeout

我有一個自定義組件,其形式簡單,我正在努力如何管理會話超時。 如果用戶點擊另一個鏈接,他們將被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'));

}

有任何想法嗎?

您可以通過將以下代碼添加到表單HTML來防止表單超時:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM