Сделать logout средствами классов и функций Xenforo

Deniz

Проверенные
Сообщения
20
Реакции
7
Баллы
3,305
Здравствуйте!
Подскажите кто знает как сделать logout средствами классов и функций Xenforo.
Пробовал с помощью функции delete() класса XenForo_Session в файле Session.php, - не получается.
 
Взято из файла library\XenForo\ControllerPublic\Logout.php
Код:
$this->getModelFromCache('XenForo_Model_Session')->processLastActivityUpdateForLogOut(XenForo_Visitor::getUserId());

            XenForo_Application::get('session')->delete();
            XenForo_Helper_Cookie::deleteAllCookies(
                $this->_getRetainedCookies(),
                array('user' => array('httpOnly' => false))
            );

            XenForo_Visitor::setup(0);

Код:
protected function _getRetainedCookies()
    {
        // do not include the cookie prefix
        return array('session', 'tfa_trust');
    }
 
Ну вот я подцепляю классы Xenforo... стандартно:
define('XF_ROOT', 'forum');
define('TIMENOW', time());
define('SESSION_BYPASS', false); // if true: logged in user info and sessions are not needed
require_once(XF_ROOT . '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader(XF_ROOT . '/library');
XenForo_Application::initialize(XF_ROOT . '/library', XF_ROOT);
XenForo_Application::set('page_start_time', TIMENOW);
$dependencies = new XenForo_Dependencies_Public();
$dependencies->preLoadData();
XenForo_Session::startPublicSession();

И что , дальше мне писать
$this->getModelFromCache('XenForo_M...........

ведь не может же с $this начинаться...

Если вы знаете как сделать logout, можно чётко написать?
 
Deniz, заменяем
$this->getModelFromCache('XenForo_Model_Session')->processLastActivityUpdateForLogOut(XenForo_Visitor::getUserId());
на:
Код:
$sessionModel = XenForo_Model::create('XenForo_Model_Session');
$sessionModel->processLastActivityUpdateForLogOut(XenForo_Visitor::getUserId());
 
grisha2217, bingo_shark, спасибо!
Получилось. Конечно, надо ещё разбираться с этой темой, поскольку сессии это не так просто, надо смотреть как удаляет, в каком объёме и т.д. Но это дорабатывается... А так, работает... Спасибо!
заменил строчку
PHP:
       $this->_getRetainedCookies(),
на 
       array('session'),

в итоге такой код работает:
PHP:
---- подключение классов ----
---
$dr_class = XenForo_Application::resolveDynamicClass('XenForo_Session');
        $dr_logout = new $dr_class();
        $dr_logout->delete();
XenForo_Model::create('XenForo_Model_Session')->processLastActivityUpdateForLogOut(XenForo_Visitor::getUserId());
            XenForo_Application::get('session')->delete();
            XenForo_Helper_Cookie::deleteAllCookies(
                array('session'),
                array('user' => array('httpOnly' => false))
            );
            XenForo_Visitor::setup(0);
Ещё раз... Это работает, но пока не могу сказать насколько корректно.
 
.почему бы всё же просто не делать редирект, а?

Я вчера все глаза проглядел до трёх ночи, но я не нашёл как правильно делать редирект... Как подключить класс? какой? чтобы использовать функцию:
PHP:
return $this->responseRedirect(
            XenForo_ControllerResponse_Redirect::SUCCESS,
            XenForo_Link::buildPublicLink('logout')
            );
 
Я вчера все глаза проглядел до трёх ночи, но я не нашёл как правильно делать редирект... Как подключить класс? какой? чтобы использовать функцию:
PHP:
return $this->responseRedirect(
            XenForo_ControllerResponse_Redirect::SUCCESS,
            XenForo_Link::buildPublicLink('logout')
            );
.ты работаешь где? :D Ты не в контроллерах работаешь что-ли?
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу