I think session_register registers the variable and its value as a global.

In this case, $test's global value is nothing. nada. Because it doesn't
exist globally.

In the reg() function, what is being output is a LOCAL variable called
$test. Not a global value.

If you put the line 
 
   global $test;

into the reg() function so that it reads:

function reg() {
   global $test;
   $test = 13;
   session_register("test");
   echo "in reg(), test=<$test><br>";
   }

Then it should work as expected. Sure it *does* say in the docs somewhere
that register_globals() is only applicable to global variables.

HTH,

Richy

==========================================
Richard Black
Systems Programmer, DataVisibility Ltd - http://www.datavisibility.com
Tel: 0141 435 3504
Email: [EMAIL PROTECTED] 


-----Original Message-----
From: Richard Fox [mailto:[EMAIL PROTECTED]]
Sent: 04 March 2002 14:57
To: [EMAIL PROTECTED]
Subject: [PHP] Session variable scope - surprise!


This is a behavior I have not found documented, in fact the books I have
read indicated that this would not be the case...

given the script (with session.save_handler = files):

<?php

function reg() {
   $test = 13;
   session_register("test");
   echo "in reg(), test=<$test><br>";
   }

session_start();
reg();
echo "test=<$test><br>";

?>

The output is:

in reg(), test=<13>
test=<>

I was quite surprised, but at least now I know why my code isn't working. I
assume that $test is going out of scope after the function reg() exits. BUT,
isn't registering a variable as a session variable supposed to give it
"superglobal" status? I thought so.  Can someone give me the 'official'
explanation of this behavior?

Many thanks,

Richard


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to