views:

896

answers:

3

The bugzilla (perl-based) system has a feature to login automatically by using a http server environment variable. If you fill in the right ID or username, you are automatically logged in.

My server runs Joomla (PHP-based) and has all the information about who is logged in. It runs bugzilla within a sub-frame.

So, how can I set this enviroment value from a PHP script?

To put it in another way, how does the following script return my own-set variable elsewhere in a session from PHP:

#!/usr/bin/perl -wT
print "Content-type: text/html\n\n";
while (($key, $val) = each %ENV) {
        print "$key = $val<BR>\n";
}
A: 

This is only a guess, but (assuming you are using Apache2) you can set environment variables using apache_setenv(). However this will only last for the lifetime of the current http request, so I'm not sure how you make it work - the request for the bugzilla page from your browser frame will be considered completely separate by Apache. You might be able to use virtual() to invoke a sub-request to Bugzilla which should then be able see that environment variable. I'm not sure whether you would need to do that for every Bugzilla page request or just the one that initiates the login.

Sorry if I've missed the point or got this very wrong

Tom Haigh
Thank you for that information. The lifetime of the HTTP request is indeed the problem.I've not seen the virtual() function, but that might do the trick as it has to make a login registration first (set a cookie or whatever), before you can do something else.
Roalt
After testing, this solution actually works! I did have to use the REQUEST_URI env. variable to reforward the requests made, and so some processing for POST variables. After also adding a htaccess.txt file every bugzilla call got diverted via this php routine. Works great!
Roalt
After some while, we found out that the virtual() function had significant problem, with uploading files, etc. Instead we made a separate authentication function in perl that could read-in the Joomla-set cookie. That worked like a charm without the drawbacks of virtual(). So in the end we didn't need to set environment variables at all.
Roalt
A: 

I'm not sure about what you need to do to create the session in Bugzilla, but I do know what needs to happen on Joomla!'s end: you will want to create a user plugin that responds to the onLoginUser event. For an example of this in action, take a look at the onLoginUser function in plugins/user/joomla.php.

(Note, this is only for Joomla! 1.5)

jlleblanc
Yes, I'm familiar with the login procedure. But of course, when the user is logged in and then wants to go to bugzilla, I can always redirect the user to a specific PHP page that then forwards further to the bugzilla page.
Roalt
A: 

Did you ever get full resolution to this? i've tried the setting environmental variables approach from php but that doesn't work very well because they are not persistant long enough.