Какой файл фактически заботится о процессе «Выход»? (убийства)

Я изучаю основную концепцию управления процессом входа в систему и сеансами. Я полагаю, что для выхода из системы пользователь должен уничтожить созданную для него сессию. Я пытался выяснить, как joomla 3.4 обрабатывает действие «logout», чтобы проверить, правильно ли я понимаю, что я узнал. Но мне трудно понять, какой PHP-файл действительно заботится о логике «выхода». Вот что я делаю:

Во-первых, я думаю, что независимо от того, какую фэнтезийную (мне) библиотеку или структуру Joomla использует, донизу, должен быть файл, получающий данные «$ _POST», поэтому я искал $_POST среди всех файлов PHP на моем сайте, и я нашел этот файл «libraries /legacy /request /request.php» с помощью этой функции

Class JRequest{
    .....
    public static function getVar($name, $default = null, $hash = 'default', $type = 'none', $mask = 0)
    {
        // Ensure hash and type are uppercase
        $hash = strtoupper($hash);

        if ($hash === 'METHOD')
        {
            $hash = strtoupper($_SERVER['REQUEST_METHOD']);
        }

        $type = strtoupper($type);
        $sig = $hash . $type . $mask;

        // Get the input hash
        switch ($hash)
        {
            case 'GET':
                $input = &$_GET;
                break;
            case 'POST':
                $input = &$_POST;
                break;
            case 'FILES':
                $input = &$_FILES;
                break;
            case 'COOKIE':
                $input = &$_COOKIE;
                break;
            case 'ENV':
                $input = &$_ENV;
                break;
            case 'SERVER':
                $input = &$_SERVER;
                break;
            default:
                $input = &$_REQUEST;
                $hash = 'REQUEST';
                break;
        }
.....

Мне кажется, что Joomla интегрировала обработку данных «$ _POST» в эту функцию, поэтому всякий раз, когда Joomla хочет иметь дело с пользовательским вводом, она будет вызывать эту функцию. Поэтому я продолжаю поиск JRequest::getVar среди всех файлов PHP, я обнаружил только одно событие, которое находится в components/com_meida/views/medialist/view.html.php строка 64

$dirname = JRequest::getVar('folder', '', '', 'string');

Это не похоже на какое-либо отношение к обработке входа /выхода. Поэтому я расширяю свой поиск до всего лишь getVar, хотя есть много событий, но ни один из них не выглядит релевантным, и именно здесь я застрял.

Не могли бы вы не только указать файл PHP, который я ищу, но и рассказать мне, что не так с моим подходом? Заранее спасибо.

2 голоса | спросил shenkwen 28 Jam1000000amThu, 28 Jan 2016 02:35:05 +030016 2016, 02:35:05

1 ответ


3

JRequest::getVar - старый устаревший метод для получения глобальных переменных, который больше не используется в Joomla 3.x

Сеанс:

У Joomla есть своя структура, которую можно найти здесь:

  

найти библиотеки /Joomla /

Файл, который вы специально ищете, чтобы уничтожить сеанс:

  

libraries /joomla /session /session.php строка 682

Смотрите здесь Github: https : //github.com/joomla/joomla-cms/blob/staging/libraries/joomla/session/session.php#L682

Как вы можете видеть, это вызывает $this->_handler->clear();, а функция для этого здесь: https://github.com/joomla/joomla-cms/blob/постановка /библиотеки /Joomla /сеанс /обработчик /native.php # L243

Это отключает и уничтожает сеанс


Выход:

Если вы хотите продолжить работу до начала сеанса, посмотрите:

  

администратор /компоненты /com_login /controller.php строка 97

ответил Lodder 28 Jam1000000amThu, 28 Jan 2016 03:04:48 +030016 2016, 03:04:48

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132