web-dev-qa-db-fra.com

Quel fichier prend en charge le processus de "déconnexion"? (séances de mise à mort)

J'apprends le concept de base de la gestion du processus de connexion et des sessions. Je suppose que pour déconnecter un utilisateur, vous devez détruire la session créée pour lui. J'essayais de savoir comment joomla 3.4 gérait l'action de "déconnexion" pour vérifier si j'avais bien compris ce que j'avais appris. Mais j’ai du mal à trouver le fichier PHP qui s’occupe de la logique de "déconnexion". Voici ce que je fais:

Premièrement, je pense que quelle que soit la bibliothèque ou le cadre sophistiqué que Joomla utilise, il devrait exister un fichier recevant des données "$ _POST". J'ai donc cherché $_POST parmi tous les fichiers PHP de mon site, et j’ai trouvé ce fichier "libraries/legacy/request/request.php" avec cette fonction

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;
        }
.....

Il me semble que Joomla a intégré le traitement de données "$ _POST" dans cette fonction. Par conséquent, chaque fois que Joomla souhaite traiter les entrées de l'utilisateur, il appelle cette fonction. Je continue donc à chercher JRequest::getVar parmi tous les fichiers PHP, je n’ai trouvé qu’une occurrence, qui est dans components/com_meida/views/medialist/view.html.php ligne 64

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

Cela ne semble pas avoir rien à voir avec le traitement de la connexion/déconnexion. Donc, j'élargis ma recherche à getVar, bien qu'il y ait beaucoup d'occurrences, aucune d'entre elles ne semble pertinente et c'est là que je me suis retrouvée coincée.

Pourriez-vous non seulement indiquer le fichier PHP que je cherche, mais aussi me dire ce qui ne va pas avec mon approche? Merci d'avance.

2
shenkwen

JRequest::getVar Est une ancienne méthode dépréciée pour obtenir des variables globales qui ne sont plus utilisées dans Joomla 3.x.

Session:

Joomla a son propre cadre qui peut être trouvé ici:

bibliothèques/joomla /

Le fichier que vous recherchez spécifiquement et traitant de la destruction de la session est le suivant:

bibliothèques/joomla/session/session.php ligne 682

Voir sur Github ici: https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/session/session.php#L682

Comme vous pouvez le constater, cela appelle $this->_handler->clear();, et sa fonction est la suivante: https://github.com/joomla/joomla-cms/blob/staging/libraries/joomla/session /handler/native.php#L24

Cela désactive et détruit la session


Connectez - Out:

Si vous voulez revenir plus en arrière avant la fin de la session, regardez:

administrateur/composants/com_login/controller.php ligne 97

3
Lodder