我有一个自定义组件,它有一个简单的表单,我正在努力如何管理会话超时。如果用户点击另一个链接,他们将被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'));
}
有什么想法吗?
答案 0 :(得分:2)
通过将以下代码添加到表单HTML:
,可以防止表单超时<?php
JHTML::_('behavior.keepalive');
?>