где то видел на форуме тему про редирект при логине \ разлогине — как остаться на той же самой странице, если у вас стоит форма входа на всех страницах.
методом тыка сделал и решил описать как — так как тема актуальна.
и так — чтоб при нажатии на кнопку выход вас перебрасывало на ту же страницу в файле
\components\registration\frontend.php
находим
и заменяем на
теперь после выхода нас перекидывает обратно на ту страницу, где мы нажали на кнопку выход.
теперь делаем при входе на сайт — при условии что у нас стоит в настройках сайта "ничего не делать после входа"
в файле \core\classes\user.class.php находим
и закоментируем всего одну строчку чтоб получилось вот так (или можно удалить её, я закоментировал на всякий случай)
вот и всё.
единственный минус — если авторизация происходит со страницы site.ru/login, то пользователя перекидывает опять на эту же страницу с предложением ввести логин и пароль — но пользователь уже авторизирован — как прописать условие так и не смог разобраться.
как будет работать у вас сказать не могу, нужно проверять, но я проверил на двух сайтах и там и там работает.
ну и по традиции моя фраза во всех моих записях
от поощрений не откажусь (инфа на стене и в подписе на форуме), а так же приветствуется плюс в карму
методом тыка сделал и решил описать как — так как тема актуальна.
и так — чтоб при нажатии на кнопку выход вас перебрасывало на ту же страницу в файле
\components\registration\frontend.php
находим
//======================================================================================================================// if ($do=='auth'){ //====================// //== разлогивание ==// if( $inCore->inRequest('logout') ) { $inCore->unsetCookie('userid'); $user_id = $inUser->id; cmsCore::callEvent('USER_LOGOUT', $user_id); $inDB->query("UPDATE cms_users SET logdate = NOW() WHERE id = '$user_id'"); $inDB->query("DELETE FROM cms_online WHERE user_id = '$user_id'"); $inDB->query("DELETE FROM cms_search WHERE session_id = '".$sess_id."'"); $inUser->dropStatTimer(); $inCore->redirect('/'); } //====================//
if ($do=='auth'){ //====================// //== разлогивание ==// if( $inCore->inRequest('logout') ) { $inCore->unsetCookie('userid'); $user_id = $inUser->id; cmsCore::callEvent('USER_LOGOUT', $user_id); $inDB->query("UPDATE cms_users SET logdate = NOW() WHERE id = '$user_id'"); $inDB->query("DELETE FROM cms_online WHERE user_id = '$user_id'"); $inDB->query("DELETE FROM cms_search WHERE session_id = '".$sess_id."'"); $inUser->dropStatTimer(); $logout_back_url = $logout_back_url ? $logout_back_url : $inCore->getBackURL(); cmsUser::sessionDel('logout_back_url'); $inCore->redirect($logout_back_url); } //====================//
теперь делаем при входе на сайт — при условии что у нас стоит в настройках сайта "ничего не делать после входа"
в файле \core\classes\user.class.php находим
// Получаем URL, предыдущий перед формой логина $auth_back_url = cmsUser::sessionGet('auth_back_url'); $auth_back_url = $auth_back_url ? $auth_back_url : $inCore->getBackURL(); cmsUser::sessionDel('auth_back_url');
// Получаем URL, предыдущий перед формой логина // $auth_back_url = cmsUser::sessionGet('auth_back_url'); $auth_back_url = $auth_back_url ? $auth_back_url : $inCore->getBackURL(); cmsUser::sessionDel('auth_back_url');
единственный минус — если авторизация происходит со страницы site.ru/login, то пользователя перекидывает опять на эту же страницу с предложением ввести логин и пароль — но пользователь уже авторизирован — как прописать условие так и не смог разобраться.
как будет работать у вас сказать не могу, нужно проверять, но я проверил на двух сайтах и там и там работает.
ну и по традиции моя фраза во всех моих записях
от поощрений не откажусь (инфа на стене и в подписе на форуме), а так же приветствуется плюс в карму
Реклама #
mashen&ka 9 лет назад #
mashen&ka 9 лет назад #