Joomla 1.0 Редирект на предыдущую страницу после авторизации

Тема в разделе "Разделение прав доступа", создана пользователем kukusya, 19.02.2009.

  1. Offline

    kukusya Недавно здесь

    Регистрация:
    23.10.2008
    Сообщения:
    6
    Симпатии:
    1
    Пол:
    Мужской
    Вопрос по компоненту авторизация. Как после авторизации вернуться на страницу с которой уходил.
    Ввести определенную страницу, это я нашел. А вот чтобы автоматом определял и оставлял на нужной странице?
     
    feniks81 нравится это.
  2.  
  3. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Re: com_login после авторизации

    Ковырять ядро. Хотя, как мне помнится, она нормально работала и редиректила туда, где был до входа.
     
    feniks81 нравится это.
  4. Offline

    riselost Недавно здесь

    Регистрация:
    31.07.2009
    Сообщения:
    7
    Симпатии:
    1
    Re: com_login после авторизации

    Dead Krolik а есть мысли какой файл и на тему чего ковырять? очень надо...:(
     
  5. Offline

    riselost Недавно здесь

    Регистрация:
    31.07.2009
    Сообщения:
    7
    Симпатии:
    1
    Re: com_login после авторизации

    kukusya, не разобрались? бьюсь второй день над проблемой, пока безрезультатно...
     
  6. Offline

    riselost Недавно здесь

    Регистрация:
    31.07.2009
    Сообщения:
    7
    Симпатии:
    1
    Re: com_login после авторизации

    В общем нашел решение здесь:
    http://forum.joomla.org/viewtopic.php?f=472&t=342620


    I found *part* of the answer. The JURI object returns the actual URL, whether SEF or index.php based.

    So to apply this, I went into the components/com_user/controller.php and made two changes.

    First, I commented out these lines in the login method:

    Code:
    if(!JError::isError($error))
    {
    // Redirect if the return url is not registration or login
    if ( ! $return ) {
    $return = 'index.php?option=com_user';
    }
    $mainframe->redirect( $return );
    }
    else
    {
    // Facilitate third party login forms
    if ( ! $return ) {
    $return = 'index.php?option=com_user&view=login';
    }
    // Redirect to a login form
    $mainframe->redirect( $return );
    }


    And I added this:

    Code:
    //Jackie's hack to redirect user to same page they were on after login
    $jackieURL =& JFactory::getURI();
    $jackieURL = $jackieURL->toString();
    $mainframe->redirect($jackieURL);


    (I named my variables after myself so I didn't have to worry about name collision, as it occured to me $URL was likely a common variable name).

    Second, I did a similar thing in the logout method. However, for some reason it isn't working there; logging out sitll redirects me to the front page.

    Also... I haven't yet figured out what to do about the register_save method.

    This is trickier, because the register page is at it's own URL, not a module so JURI won't work. I need to redirect to the page *before* the register page and don't yet know how to do that.

    So... I've done my very first hack. TADA!
     
  7. Offline

    riselost Недавно здесь

    Регистрация:
    31.07.2009
    Сообщения:
    7
    Симпатии:
    1
    Re: com_login после авторизации

    Тоесть логин действительно не переадресовывает... но вот логаут продолжает... :(
     
  8. Offline

    riselost Недавно здесь

    Регистрация:
    31.07.2009
    Сообщения:
    7
    Симпатии:
    1
    Re: com_login после авторизации

    Разобрался и с логаутом...

    www\modules\mod_login\tmpl\default.php

    Изменяем чтобы приняло такой вид:

    <form action="index.php" method="post" name="login" id="form-login">
    <?php if ($params->get('greeting')) : ?>
    <div>
    <?php if ($params->get('name')) : {
    echo JText::sprintf( 'HINAME', $user->get('name') );
    } else : {
    echo JText::sprintf( 'HINAME', $user->get('username') );
    } endif; ?>
    </div>
    <?php endif; ?>
    <div align="center">
    <input type="submit" name="Submit" class="button" value="<?php echo JText::_( 'BUTTON_LOGOUT'); ?>" />
    </div>

    <input type="hidden" name="option" value="com_user" />
    <input type="hidden" name="task" value="logout" />
    <?php
    $jackieURL2 =& JFactory::getURI();
    $jackieURL2 = $jackieURL2->toString();
    #$mainframe->redirect('http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);


    ?>
    <input type="hidden" name="return" value="<?php #echo $return;
    echo base64_encode($jackieURL2);
    ?>" />
    </form>

    Теперь и логинится и разлогинивается, оставаясь на той же странице...
     
  9. Offline

    riselost Недавно здесь

    Регистрация:
    31.07.2009
    Сообщения:
    7
    Симпатии:
    1
    Re: com_login после авторизации

    Еще проще и правильнее сделать так:

    The problem has been fixed in 1.5.10 release.
    If you are using yoologin module then you should modify a helper.php that comes with it
    find and replace this :
    Code:
    $url = JURI::base(true);

    with this:
    Code:
    //stay on same page
    $uri = JFactory::getURI();
    $url = $uri->toString(array('path', 'query', 'fragment'));

    the redirection page in module parameters must be NOT SET (aka -Select Item-)
     
    feniks81 нравится это.
  10. Offline

    feniks81 Недавно здесь

    Регистрация:
    25.03.2008
    Сообщения:
    15
    Симпатии:
    0
    Пол:
    Мужской
    Я использую yoo login. удалось исправить и его. выкладываю:
    modules/mod_yoo_login/tmpl/quick.php (поскольку я использую стиль quick.php) хотя думаю значения не имеет. редактируйте нужный.
    находим
    Код (CODE):
    1. <input type="hidden" name="return" value="<?php echo $return; ?>" />

    такие строчки 2 раза упоминаются в этом файле - для логоута и для логина.
    заменяем их на
    Код (CODE):
    1. <?php
    2. $jackieURL2 =& JFactory::getURI();
    3. $jackieURL2 = $jackieURL2->toString();
    4. #$mainframe->redirect('http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);  
    5. ?>
    6. <input type="hidden" name="return" value="<?php #echo $return;
    7. echo base64_encode($jackieURL2);
    8. ?>" />


    после такой модификации при входе или выходе вы будете возвращаться на исходную страницу.
    текст заменять в обоих случаях (в обоих строчках)
     

Поделиться этой страницей

Загрузка...