Joomla et sessions...
Le
Denis Beauregard
Bonjour,
Est-ce que Joomla détruit la session quand on clique sur un lien
hors-Joomla ?
Je dois interfacer une application existante depuis Joomla. Pour
cette fin, j'ai créé un module contenant ces lignes :
<?php
$url="../dossier/index.php";
//URL relative pour conserver session selon doc PHP
$_SESSION['secret']="sdgafgsae";
?>
<a href="<?php echo $url."?SID=".session_id(); ?>"
target="_top">Accès aux bases de données</a> <br>
Cela me donne un lien
http://127.0.0.1/MOI/dossier/index.php?SIDff4f54e4fabc880c9c02752c202032
mais quand je clique sur le lien et que je veux voir les variables de
session, aucune ne passe. De plus, le fichier de la session est vide
dans le cache (longueur = 0).
Est-ce que Joomla est cryptique au point d'avoir des sessions
(session_start me dit que la session est déjà lancée) mais sans qu'on
puisse utiliser ces sessions sans passer par Joomla ? Mon client veut
utiliser Joomla pour la gestion des abonnés mais je ne tiens pas à
passer 3 mois à décoder la documentation interne de Joomla d'autant
plus qu'elle est incomplète (aucun mot sur la reprise de session et
le relais vers une application externe depuis Joomla sauf le lien
simple sans passage de session, donc public).
Joomla crée pourtant un fichier de session dans le cache de EasyPHP,
donc je vois mal pourquoi on placerait les variables de session
ailleurs, surtout celles que je créé avec $_SESSION !!!
Denis
Est-ce que Joomla détruit la session quand on clique sur un lien
hors-Joomla ?
Je dois interfacer une application existante depuis Joomla. Pour
cette fin, j'ai créé un module contenant ces lignes :
<?php
$url="../dossier/index.php";
//URL relative pour conserver session selon doc PHP
$_SESSION['secret']="sdgafgsae";
?>
<a href="<?php echo $url."?SID=".session_id(); ?>"
target="_top">Accès aux bases de données</a> <br>
Cela me donne un lien
http://127.0.0.1/MOI/dossier/index.php?SIDff4f54e4fabc880c9c02752c202032
mais quand je clique sur le lien et que je veux voir les variables de
session, aucune ne passe. De plus, le fichier de la session est vide
dans le cache (longueur = 0).
Est-ce que Joomla est cryptique au point d'avoir des sessions
(session_start me dit que la session est déjà lancée) mais sans qu'on
puisse utiliser ces sessions sans passer par Joomla ? Mon client veut
utiliser Joomla pour la gestion des abonnés mais je ne tiens pas à
passer 3 mois à décoder la documentation interne de Joomla d'autant
plus qu'elle est incomplète (aucun mot sur la reprise de session et
le relais vers une application externe depuis Joomla sauf le lien
simple sans passage de session, donc public).
Joomla crée pourtant un fichier de session dans le cache de EasyPHP,
donc je vois mal pourquoi on placerait les variables de session
ailleurs, surtout celles que je créé avec $_SESSION !!!
Denis

Poser une question


fr.comp.infosystemes.www.auteurs:
...
J'ajoute que session_id() affiche quelque chose mais que SID est
vide, ceci dans le module Joomla que j'ai écrit. Donc, au départ,
il y a une anomalie !
Denis
fr.comp.infosystemes.www.auteurs:
J'ai découvert une partie de la réponse et elle ne me plaît pas
beaucoup !
Au lieu d'utiliser la session de PHP ou de laisser le développeur
le faire, on vide toutes les variables et on les place dans une
base de données (ce qui explique peut-être pourquoi joomla est si
lent).
Bon, maintenant, comment simuler une session quand session_start et
tout le mécanisme ne peut pas être utilisé ?
Denis
Pas nécessairement. C'est une technique courante pour gérer les sessions.
Tu peut personnaliser le gestionnaire de session natif de PHP pour
qu'il utilises celui de Joomla.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Seeking for a position
fr.comp.infosystemes.www.auteurs:
En SQL ? Je m'attendrais à ce qu'on utilise des fichiers dans /tmp
dont l'accès est plus rapide que des enregistrements dans une base
mySQL. Mais c'est vrai que si on n'utilise pas /tmp, on ne laisse
pas à d'autres sites sur le même serveur une porte ouverte sur nos
visiteurs.
J'avais pensé faire l'inverse, soit trouver comment Joomla gère ses
sessions et adapter le code pour au moins prendre quelques variables
(typiquement, le courriel et le numéro d'adhérent, le reste étant
superflu pour mon application). Comme il s'agit de la consultation
d'une base de données disponible depuis quelques années dans des
bibliothèques publiques et privées, ce n'est pas aussi critique
que toute la gestion du site. Donc, je n'utiliserais que 3
informations, le numéro de session et les courriels et numéros pris
dans la table des sessions, puis je lancerais la session habituelle
de PHP.
Le hic, c'est que mon application sera limitée à la version courante
de Joomla (donc, si Joomla change sa façon de gérer les sessions, il
faudra modifier le code).
Denis
Il n'y a pas que ça. Si /a priori/ l'accès au fichier est plus
rapide, il peut etre bloquant et entrainer des pertes de performances
importantes. Avec une dizaine d'accès disque, on ne voit pas de
différences. Mais dès que les utilisateurs sont nombreux, peut-etre
100k, le passage par une base de données réduirait le nombre d'accès
disque à 3*nombre de tables pour des tables InnoDb. Et encore, il faut
penser au cache de MySQL.
Il faudra donc encapsuler correctement la consultation de la session
étrangère.
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org