Well, it's probably me that's confused. I have an authenticate() 
function which should start a session and if the user is not logged in 
then show the login screen otherwise return after storing and 
registering a user object in a session variable. This object has 
accessor methods to get the login name, access level, etc... This seems 
to work okay--within the authenticate function I can access the object 
in the HTTP_SESSION_VARS array. But as soon as I return to the main 
script it's gone. I must be doing something wrong with the scoping, but 
I can't see what. Any thoughts? Here's the code:

<?php
/* --------- */
/* index.php */
/* --------- */

require_once('ucautho/ucautho.inc');

authenticate();

print("From index testUser: " . $testUser->getLogin() . "<br>\n");
print("From index HTTP_SESSION_VARS['ucAuthoUser']: ");
print($HTTP_SESSION_VARS['ucAuthoUser']->getLogin() . "<br>\n"); //this 
is line 12

?>

<?php
/* ------------------- */
/* ucautho/ucautho.inc */
/* ------------------- */

function authenticate($appName="") {
     global $HTTP_SESSION_VARS, $HTTP_POST_VARS;
     global $testUser;
     session_name("UCAutho");
     session_start();

     if (isset($HTTP_SESSION_VARS['ucAuthoUser']) && 
$HTTP_SESSION_VARS['ucAuthoUser']->isValid()) {
         return;
     } else {
         if (isset($HTTP_POST_VARS['authoSubmit'])) {
             $HTTP_SESSION_VARS['ucAuthoUser'] =&
                 new 
UcAuthoUser($HTTP_POST_VARS['authoLogin'],$HTTP_POST_VARS['authoPword']);
             if ($HTTP_SESSION_VARS['ucAuthoUser']->isValid()) {
                 session_register('ucAuthoUser');
                 $testUser = $HTTP_SESSION_VARS['ucAuthoUser'];
                 print("From authenticate testUser: " . 
$testUser->getLogin() . "<br>\n");
                 print("From authenticate 
HTTP_SESSION_VARS['ucAuthoUser']: ");
                 print($HTTP_SESSION_VARS['ucAuthoUser']->getLogin() . 
"<br>\n");
                 return;
             }
         }
         showLogin($appName);
     }
}

/* more functions and the class declaration snipped */

?>

Here's what I get when I login as 'steve' with a good password:

 From authenticate testUser: steve
 From authenticate HTTP_SESSION_VARS['ucAuthoUser']: steve
 From index testUser: steve
 From index HTTP_SESSION_VARS['ucAuthoUser']:
Fatal error: Call to a member function on a non-object in 
/home/httpd/html/ucdamage/index.php on line 12

Note the testUser works in both instances, the session var only works 
inside the function.

-Steve


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to