[Хак] Выйти/войти и остаться на той же странице

+22
2.17K
где то видел на форуме тему про редирект при логине \ разлогине — как остаться на той же самой странице, если у вас стоит форма входа на всех страницах.
методом тыка сделал и решил описать как — так как тема актуальна.
и так — чтоб при нажатии на кнопку выход вас перебрасывало на ту же страницу в файле
\components\registration\frontend.php
находим
  1.  
  2. //======================================================================================================================//
  3.  
  4. if ($do=='auth'){
  5.  
  6. //====================//
  7. //== разлогивание ==//
  8. if( $inCore->inRequest('logout') ) {
  9. $inCore->unsetCookie('userid');
  10.  
  11. $user_id = $inUser->id;
  12. $sess_id = session_id();
  13.  
  14. cmsCore::callEvent('USER_LOGOUT', $user_id);
  15.  
  16. $inDB->query("UPDATE cms_users SET logdate = NOW() WHERE id = '$user_id'");
  17. $inDB->query("DELETE FROM cms_online WHERE user_id = '$user_id'");
  18. $inDB->query("DELETE FROM cms_search WHERE session_id = '".$sess_id."'");
  19.  
  20.  
  21. $inUser->dropStatTimer();
  22.  
  23. $inCore->redirect('/');
  24. }
  25.  
  26. //====================//
  27.  
  28.  
и заменяем на
  1.  
  2. if ($do=='auth'){
  3.  
  4. //====================//
  5. //== разлогивание ==//
  6. if( $inCore->inRequest('logout') ) {
  7. $inCore->unsetCookie('userid');
  8.  
  9. $user_id = $inUser->id;
  10. $sess_id = session_id();
  11.  
  12. cmsCore::callEvent('USER_LOGOUT', $user_id);
  13.  
  14. $inDB->query("UPDATE cms_users SET logdate = NOW() WHERE id = '$user_id'");
  15. $inDB->query("DELETE FROM cms_online WHERE user_id = '$user_id'");
  16. $inDB->query("DELETE FROM cms_search WHERE session_id = '".$sess_id."'");
  17.  
  18.  
  19. $inUser->dropStatTimer();
  20.  
  21. $logout_back_url = $logout_back_url ? $logout_back_url : $inCore->getBackURL();
  22. cmsUser::sessionDel('logout_back_url');
  23. $inCore->redirect($logout_back_url);
  24. }
  25.  
  26. //====================//
  27.  
  28.  
  29.  
теперь после выхода нас перекидывает обратно на ту страницу, где мы нажали на кнопку выход.

теперь делаем при входе на сайт — при условии что у нас стоит в настройках сайта "ничего не делать после входа"
в файле \core\classes\user.class.php находим
  1.  
  2. // Получаем URL, предыдущий перед формой логина
  3. $auth_back_url = cmsUser::sessionGet('auth_back_url');
  4. $auth_back_url = $auth_back_url ? $auth_back_url : $inCore->getBackURL();
  5. cmsUser::sessionDel('auth_back_url');
  6.  
и закоментируем всего одну строчку чтоб получилось вот так (или можно удалить её, я закоментировал на всякий случай)
  1.  
  2. // Получаем URL, предыдущий перед формой логина
  3. // $auth_back_url = cmsUser::sessionGet('auth_back_url');
  4. $auth_back_url = $auth_back_url ? $auth_back_url : $inCore->getBackURL();
  5. cmsUser::sessionDel('auth_back_url');
  6.  
  7.  
вот и всё.

единственный минус — если авторизация происходит со страницы site.ru/login, то пользователя перекидывает опять на эту же страницу с предложением ввести логин и пароль — но пользователь уже авторизирован — как прописать условие так и не смог разобраться.

как будет работать у вас сказать не могу, нужно проверять, но я проверил на двух сайтах и там и там работает.


ну и по традиции моя фраза во всех моих записях
от поощрений не откажусь (инфа на стене и в подписе на форуме), а так же приветствуется плюс в карму
0
mashen&ka mashen&ka 8 лет назад #
Хороший хак, но жаль что не доделан до ума!
единственный минус - если авторизация происходит со страницы site.ru/login , то пользователя перекидывает опять на эту же страницу с предложением ввести логин и пароль - но пользователь уже авторизирован
это очень не хороший минус! А вещь очень нужная вообще....
0
mashen&ka mashen&ka 8 лет назад #
И не написана версия....

Еще от автора

Модуль для бесплатной версии компонента "Попутчики" автора Олег
и так представляю вашему вниманию модуль для бесплатной версии компонента "Попутчики" написанной Олегом.
список всех Event-ов системы
решил отдохнуть минут пять от подготовки к госам - полез сюда на сайт, прочитал такую строку в комментах в одном из последних блогов пришла идея разыс
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.