web-dev-qa-db-fra.com

Qu'est-ce qui pourrait causer la disparition intermittente des données de session Joomla?

Ma question est inspirée par un vieux problème que je ne pense pas avoir correctement résolu. Je stockais des informations sur les tableaux dans une session Joomla à laquelle j'ai accédé peu de temps après. J'ai trouvé que la variable Joomla que j'avais définie manquait par intermittence.

Pour les intérêts, vous pouvez voir mon problème initial à https://stackoverflow.com/questions/13052495/how-to-prevent-race-conditions-when-writing-reading-joomla-session- variables-fr

Je ne vais cependant pas poser la même question, mais j'espérais obtenir des réponses aux questions connexes suivantes.

  1. Qu'est-ce qui pourrait causer la disparition intermittente des données de session Joomla?
  2. Comment puis-je résoudre les variables de session Joomla manquantes?
1
TryHarder

D'après ce que j'ai vu, les données de session peuvent "disparaître" de plusieurs manières.

  1. Le premier moyen est exactement ce que les gens ont déjà mentionné ou suggéré. C'est là que vous atteignez la limite du temporisateur de session. Une fois le compte à rebours atteint, la session est effacée de la mémoire.

  2. Lorsque vous vous déconnectez, vos données de session sont effacées. Cela dépend de la fonction de déconnexion appelée et de la version de Joomla. J'ai vu des cas où seule la partie Joomla Session est effacée. J'ai également vu des cas où la totalité du $ _SESSION global est effacée.

  3. J'ai également vu des cas de tentatives de stockage de données de session via les API Joomla ne stockant rien du tout ou stockées dans un endroit inattendu. Après avoir défini une variable de session, videz la session pour vous assurer qu'elle est définie et où vous pensez la trouver.

  4. Celui-ci est plus commun pour les données de session manquantes aléatoires. C'est à ce moment-là que vous atteignez la limite www/non-www ou http/https. Apache (le serveur Web principal des sites Joomla) est parfois confus lorsque le même navigateur franchit la limite www/non-www ou http/https. Certaines installations gèrent très bien, d'autres non, mais c'est assez courant. Voici la partie intéressante, il ne doit même pas être le lien principal vers lequel ils se connectent qui traverse ce pont, cela pourrait être un CSS, un fichier JS, une image, etc. inclus sur la même page qui se trouve sur le site www/non pont www ou http/https qui pourrait être à l'origine du problème. C'est très rare ces jours-ci, mais je l'ai vu sur plus d'un site.

Ce sont les seuls moyens auxquels je peux penser dès le départ qui pourraient montrer ce comportement.

2
Donald Champion

Une autre possibilité est que les données de session soient tronquées à cause des caractères de la langue. Si vous enregistrez dans la base de données, vérifiez que les données de la session sont complètes (joint correctement {}).

Par exemple, si session essaie de stocker Montréal, il peut être tronqué à Montr. Tout est perdu après la perte de Montr et les données de session peuvent plus longtemps être mises à jour.

1
mwf