RE: [PHP] Some SESSION Vars not Registering
| From: | Warren Vail | Date: | Wed, 23 Jul 2003 02:03:07 +0000 |
| Subject: | RE: [PHP] Some SESSION Vars not Registering | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-156369@lists.php.net to get a copy of this message | ||
Don't all variables registered to a session need to be declared as global?
Warren Vail
warren@vailtech.net
-----Original Message-----
From: Tom Rogers [mailto:trogers@kwikin.com]
Sent: Tuesday, July 22, 2003 6:15 PM
To: Jeff Stillwall
Cc: php-general@lists.php.net
Subject: Re: [PHP] Some SESSION Vars not Registering
Hi,
Wednesday, July 23, 2003, 6:22:58 AM, you wrote:
JS> I have a function that assigns some session variables I need available
JS> during a user's visit. Oddly enough, as I assign about 7 variables, I
JS> noticed that not all had data. This is the function:
JS> function setupUserEnv ($userArray) {
JS> $_SESSION['loggedIn'] = 1;
JS> $_SESSION['id'] = $userArray['id'];
JS> $_SESSION['uid'] = $userArray['uid'];
JS> $_SESSION['fname'] = $userArray['fname'];
JS> $_SESSION['lname'] = $userArray['lname'];
JS> $_SESSION['dateapproved'] = $userArray['dateapproved'];
JS> $_SESSION['email'] = $userArray['email'];
JS> }
JS> Pretty straight forward. I've used var_dump as soon as I enter the
function
JS> to make sure $userArray is populated the way I expect - it always is.
Only
JS> the session variables for 'loggedIn', 'uid' and 'dateapproved'
JS> stay set
JS> outside of this function. However, I can set a session var not used in
my
JS> program in this function, and it'll stick: $_SESSION['justTesting'] =
JS> "test"; will stay set outside of this function.
JS> If I put a var_dump at the end of the function for $_SESSION, I see all
JS> session vars are set within the scope of the function. Once outside of
the
JS> function, some stay set, some do not.
JS> I've read the chapter in the manual about variable scope, and it seems
JS> pretty clear that $_SESSION is a superglobal, and I do not have to
declare
JS> it with the 'global' keyword.
JS> I've tested this on three separate installations of PHP/Apache, and I
get
JS> the same behavior each time.
JS> Anyone clue me in to what I'm doing wrong? Thanks!
JS> --
JS> Jeff Stillwall
Try passing a reference to the array like this
function setupUserEnv (&$userArray) {
$_SESSION['loggedIn'] = 1;
$_SESSION['id'] = $userArray['id'];
$_SESSION['uid'] = $userArray['uid'];
$_SESSION['fname'] = $userArray['fname'];
$_SESSION['lname'] = $userArray['lname'];
$_SESSION['dateapproved'] = $userArray['dateapproved'];
$_SESSION['email'] = $userArray['email'];
}
Otherwise no idea at this point :)
--
regards,
Tom
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php