错误登录后尝试Joomla 3重定向

时间:2014-08-05 17:59:41

标签: redirect joomla login

我使用Joomla的登录模块。登录和注销重定向到模块设置中设置的页面。

我的问题是状态,用户尝试使用错误的用户凭据登录。在这种情况下,用户将被重定向到component / users /?view = login页面。就我而言,这个页面没有被使用,也没有像其他页面那样设计。因此,我想在错误登录后将用户重定向到上一页。

有人有线索,如何解决?

THX

4 个答案:

答案 0 :(得分:2)

您需要修改用户控制器。但要保持“更新证明”,你无法修改核心代码,这就是为什么我们要进行覆盖:

  1. 转到components/com_users/controllers/并复制名为user.php的文件,您可以调用新文件user2.php
  2. 打开user2.php文件并将控制器类重命名为UsersControllerUser2
  3. 创建登录模块的模板覆盖(以使其也更新校样),创建templates/YOUR_TEMPLATE/html/mod_login文件夹并在那里复制modules/mod_login/tmpl/default.php文件。
  4. 打开在步骤3中创建的文件,并将登录模块任务从<input type="hidden" name="task" value="user.login" />更改为<input type="hidden" name="task" value="user2.login" />
  5. 再次打开user2.php文件,并修改这部分代码(第77-82行):
  6.   

    $ APP-&GT;重定向(JROUTE :: _( '的index.php选项= com_users&安培;图=登录',   假));

    $app->redirect路线更改为您想要的任何路线:)

答案 1 :(得分:1)

执行此操作的最佳方法是使用mod_login模块的模板覆盖。此链接详细说明了如何执行此操作的具体细节。

http://docs.joomla.org/Layout_Overrides_in_Joomla

基本上,您将位于/modules/mod_login/tmpl/default_login.php的文件复制到/ templates / {YOUR_TEMPLATE} / html / mod_login,这就是Joomla用来渲染任何mod_login模块的内容,只要您保留文件名相同。

在第116行,您将看到以下代码行:

    <input type="hidden" name="return" value="<?php echo $return; ?>" />

您现在可以完全控制返回值。我通常在URL中传递base64编码的返回参数,我依次解析并插入我的模块模板覆盖中的返回隐藏输入的值

请注意,您应该永远不要更改核心文件或将自定义文件放在侧面核心文件中,原因很简单,主要是任何后续的Joomla更新都可能会消除您的网站更改。

答案 2 :(得分:0)

在Joomla 3.6.1中,为了在错误登录后停留在同一页面,您必须更改/components/com_users/controllers/user.php中的一行

查找

if (true !== $app->login($credentials, $options))
    {
        // Login failed !
        // Clear user name, password and secret key before sending the login form back to the user.
        $data['remember'] = (int) $options['remember'];
        $data['username'] = '';
        $data['password'] = '';
        $data['secretkey'] = '';
        $app->setUserState('users.login.form.data', $data);
        $app->redirect(JRoute::_('index.php?option=com_users&view=login', false));

并且只评论最后一行:

        // $app->redirect(JRoute::_('index.php?option=com_users&view=login', false));

这就是全部。

答案 3 :(得分:0)

di3sel非常重要,仍然可以在2019年使用,在第3步中,您可以添加:

  1. 为您的登录模块创建一个模板替代(以使其也得到更新证明),创建一个template / YOUR_TEMPLATE / html / mod_login文件夹,并在其中复制模块/mod_login/tmpl/default.php文件,并使用不同的名称像altlogin.php

  2. 在管理区域中,打开mod_login,在高级选项卡中找到“演示文稿”,然后从模板中选择在步骤3“ altlogin”中创建的视图。

谢谢。