问题描述
我正在尝试修改
原始插件会在使用register_shutdown_function
遇到无效令牌错误时重定向.
The original plugin redirects on encountering an invalid token error using register_shutdown_function
.
我正在尝试将其发送到:
I'm trying to get it to:
- 如果用户已登录,请注销该用户
- 使用无效的令牌消息重定向到登录页面
代码:
$app = JFactory::getApplication();
if (!JFactory::getUser()->guest)
{
$app->logout();
}
$app->redirect('/index.php', JText::_('JINVALID_TOKEN'), 'warning');
我可以成功注销用户并重定向到登录页面,但不会显示错误消息.
I can successfully log the user out and redirect to the login page but the error message is not being displayed.
注销用户后如何保留消息?
How can I retain the message after logging the user out?
我也尝试过:
$app->enqueueMessage(JText::_('JINVALID_TOKEN'), 'warning');
但是那也不起作用...
but that didn't work either...
推荐答案
我想到的解决方案是Alonzo Turner的第二篇文章的变体此处.
The solution I came up with was a variation of Alonzo Turner's 2nd post here.
该插件使用在URL中传递的参数重定向到登录页面.然后,onAfterInitialise
事件将查找此参数,并在找到该消息时显示一条消息.
The plugin redirects to the login page with a parameter passed in the url. The onAfterInitialise
event then looks for this parameter and displays a message if it's found.
class PlgSystemTokeninterceptor extends JPlugin
{
public function __construct(&$subject, $config = array())
{
parent::__construct($subject, $config);
$app = JFactory::getApplication();
if (($app->isSite() && $this->params->get('use_frontend')) || ($app->isAdmin() && $this->params->get('use_backend')))
{
register_shutdown_function(array($this,'redirectToLogin'));
}
}
public function redirectToLogin()
{
$content = ob_get_contents();
if($content == JText::_('JINVALID_TOKEN') || $content == 'Invalid Token')
{
$app = JFactory::getApplication();
if (!JFactory::getUser()->guest)
{
$app->logout();
}
$app->redirect(JURI::base().'index.php?invalid_token=true');
return false;
}
}
function onAfterInitialise()
{
$app = JFactory::getApplication();
$invalid_token = $app->input->get('invalid_token', 'false');
if ($invalid_token == 'true')
{
$app->enqueueMessage(JText::_('JINVALID_TOKEN'), 'warning');
}
return true;
}
}
这篇关于Joomla注销并显示消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!