views:

2221

answers:

4

I've trying to build Joomla into my existing website so I can use it for premium content.

I've already got a custom-built authentication system that sets my own session variables.

For some reason, Joomla (which is located in a different directory) doesn't want to recognize these session variables, even when adding the session_start(); line at the top of all Joomla pages.

Any idea how I can get Joomla to recognize my custom session variables so I can limit the content located in Joomla to only premium users?

Thank you.

A: 

Maybe your authentication system uses cookies and sets a cookie path that prevents then browser from sending the session-id cookie back to the joomla script.
The cookie path would probably be set via session_set_cookie_params() or ini_set().

VolkerK
A: 

Joomla 1.5 uses a JSession class.

As everything in Joomla is powered by it's own internal framework, I wouldn't recommend writing pure PHP for something like sessions, as it's likely that Joomla overwrites old session variables when it initializes it's own internal session management code.

FilmJ
A: 

Joomla will most likely initialize it's own session (we'll call it session "B") separate from the other system you're talking about which determines if the user gets the "premium" session (we'll call this session "A"). Once session "B" starts, I don't think it will be possible for session "B" to access information in session "A".

My suggestion for getting around this would be to write the session handling code in pure PHP and run that code before Joomla loads it's own session. That way when you run session_start() it should catch session "A".

A good way to get this into Joomla would be to write a "System" plugin and call the function "onAfterInitialise" this function get's called before Joomla has even setup it's session (at least, I'm pretty sure about that.. haha).

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport( 'joomla.plugin.plugin' );

class  plgSystemPremium extends JPlugin
{
    function onAfterInitialise() {
        // ... load session
        // if premium user, return
        // else, redirect user to a registration page or whatever
    }
}
?>
Garrett Bluma
+1  A: 

Joomla uses their own session management so when you use php session it wont work guarantee. To get around this just try to juse joomla session management.

This may solve you problem.

Quang