[PHP] Confused object in session variable.

2001-10-25 Thread Steve Cayford

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]




Re: [PHP] Confused object in session variable.

2001-10-25 Thread Steve Cayford

An update...
I had register_globals turned off. Now that I've turned register_globals 
on and changed my references from $HTTP_SESSION_VARS['ucAuthoUser'] to 
$ucAuthoUser it works as I expect.

I'm not real happy with having register_globals on, though, and I'd like 
to figure out what I was doing wrong.

Thanks for any suggestions.

-Steve

On Thursday, October 25, 2001, at 12:07  PM, Steve Cayford wrote:

 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]



-- 
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]