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.
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.
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
Si vous voulez revenir plus en arrière avant la fin de la session, regardez:
administrateur/composants/com_login/controller.php ligne 97