web-dev-qa-db-fra.com

Comment désactiver la session de stockage pour invité ou public sur la table Joomla

Je souhaite désactiver la session pour tous les invités ou les visiteurs publics qui sont stockés dans la table des sessions de joomla afin de réduire le nombre de hits et le chargement du serveur. En fait, mon site Web ne dispose ni de connexion frontale ni d'accès utilisateur, ce qui signifie que je n'ai pas à m'inquiéter des attaques CSRF ni des autres attaques, car aucune authentification n'est requise.

J'ai essayé de nombreux paramètres et optimisations différents, tels que la suppression des extensions inutilisées (composants/modules/plugins) et le basculement de $session_handler Sur memcached ou none(file), mais sans chance ni session. table continue de croître, en particulier lorsque les robots et les robots piratent le trafic.

J'ai trouvé des solutions de contournement après avoir googlé, par exemple. Désactivation de la session Joomla sur invité/public (Joomla 3.x) . Cependant, ce sont peu les approches recommandées.

Beaucoup ont également demandé une fonctionnalité pour désactiver le comportement et le problème peut être trouvé sur la page Github de Joomla: voir Merci de rendre possible la désactivation du comportement par défaut de Joomla de créer des sessions pour les "utilisateurs invités" dans la base de données # 8772 =.

Veuillez me guider s'il y a une solution ou pas du tout?

3
kolunar

Une autre façon de réduire la charge du serveur consiste à créer la table de session de type mémoire. Vous devez définir une taille de tas mysqls assez grande et convertir le champ blob de la session en un grand varchar, d'une longueur de 15 000 par exemple.

J'ai eu d'excellents résultats avec cela.

Une autre option consiste à utiliser memcache et quelque chose comme élastique

3
jdog

Si vous ne voulez pas utiliser une sorte de base hack, je créerais un déclencheur sur la table de session elle-même. Quelque chose comme cela devrait fonctionner mais n'est pas testé.

CREATE TRIGGER `delete_before` 
BEFORE INSERT ON `j25_session`
FOR EACH ROW 
BEGIN 
IF(NEW.`guest` = 1) THEN 
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'your error message';
END IF; 
END;
0
cybersholt

Vous avez détruit une session de votre site web à tout moment?
Veuillez copier le code ci-dessous pour coller votre template index.php

<?php
$session =JFactory::getSession(); // starting the session
$session->destroy(); //This will destroy the joomla session
?> 

Lire la documentation ci-dessous
https://docs.joomla.org/API15:JSession/destroy

0
Josef Amalraj