Personnalisé Séances avec Joomla
J'ai essayer de construire Joomla sur mon site donc je peux l'utiliser pour du contenu premium.
J'ai déjà un custom-built système d'authentification qui définit mes propres variables de session.
Pour une raison quelconque, Joomla (qui se trouve dans un autre répertoire) ne veut pas reconnaître ces variables de session, même lors de l'ajout de la fonction session_start(); ligne en haut de toutes les pages Joomla.
Une idée de comment je peux obtenir Joomla à reconnaître mon custom variables de session afin que je puisse limiter le contenu situé dans Joomla seulement les utilisateurs premium?
Merci.
Vous devez vous connecter pour publier un commentaire.
Joomla utilise leur propre gestion de session ainsi, lorsque vous utilisez une session php il l'habitude de garantie des travaux. Pour contourner ce problème juste essayer de juse joomla de gestion de session.
Cela peut résoudre votre problème.
Je sais que c'est une vieille question, mais j'ai décidé de poster une solution d'ici au cas où quelqu'un est toujours à la recherche pour elle.
Joomla utilise son propre cadre de travail et de gestion de session. Vous pouvez toujours écrire vos propres fichiers php et l'accès Joomla variables de session. Il vous suffit de charger le joomla framework dans votre script php.
Pour J1.6, vous devez inclure les lignes suivantes au début de votre script php. REMARQUE: ces le besoin d'être inclus dans le très haut comme joomla va appeler une fonction session_start().
Une fois que vous faites cela, vous pouvez stocker des variables de session à l'aide de:
lire les variables de session à l'aide de:
et les unset les variables de session à l'aide de:
Cela fonctionne pour J1.6. Vous aurez probablement besoin de changer les lignes de charge de la communauté joomla cadre pour les autres versions. Je voudrais commencer par l'index.php dans la communauté Joomla racine du répertoire qu'il a à charge de le cadre.
J'espère que cette aide.
Joomla sera plus susceptible de les initialiser session (nous allons l'appeler session "B") distinct de l'autre système dont vous parlez, qui détermine si l'utilisateur obtient la "prime" de session (nous l'appellerons cette session "Un"). Une fois la session "B" commence, je ne pense pas qu'il sera possible pour la session "B" pour accéder à des informations de session "Un".
Ma suggestion pour contourner ce serait d'écrire le gestionnaire de session de code en pur PHP et exécutez ce code avant de Joomla charge sa propre session. De cette façon, lorsque vous exécutez la fonction session_start() il doit attraper session "Un".
Un bon moyen d'obtenir ce dans Joomla serait d'écrire un "Système" plug-in et appeler la fonction "onAfterInitialise" cette fonction est appelée avant que Joomla a même de la configuration de la session (au moins, je suis sûr que ce sujet.. haha).
Peut-être que votre système d'authentification utilise des cookies et définit un chemin du cookie qui empêche alors le navigateur à partir de l'envoi de la session-id de cookie au joomla script.
Le chemin du cookie serait probablement être réglé via le session_set_cookie_params() ou la fonction ini_set().
Joomla 1.5 utilise un JSession classe.
Comme tout dans Joomla est alimenté par sa propre structure interne, je ne recommanderais pas l'écriture pure PHP pour quelque chose comme des séances, car il est probable que Joomla écrase les variables de session lorsqu'il l'initialise internes de gestion de session de code.
J'ai utilisé
jumi
, un grand composant libre pourjoomla
qui des liens vers n'importe quel fichier et conserve les données de session.Si vous avez besoin d'une propre page, utilisez
ob_end_clean();
en haut de le nouveau fichier etdie;
à la fin, pour effacer le modèle de joomla.je continue à voir des gens en disant que phpsessions ne fonctionne pas dans joomla et je n'étais pas prêt à apprendre l'joomla cadre de leur gestion de session, je n'avais pas le temps pour ça, donc j'ai fait quelques tests et j'ai trouvé que si vous venez de démarrer la session php dans la page principale de votre modèle et non pas sur la page d'index de votre site web pourra fonctionner correctement. viens de mettre cette ligne de code sur la page d'accueil de votre page modèle: