basically, there are several given superglobals in php - ie, variables that are omnipresent. These are
$POST - data posted from a form
$_GET - data from the url, ie index.php?var1=data1&var2=data2
$SESSION - session variables
$_COOKIE - cookie variables
$ENV - environment variables
$_SERVER - server data
...think there's maybe one or two more, but anyway.
say if you post a field called name from a form - in the script the form points to, you can access the variable using
$_POST['name'];
and this holds the value given in the form. The same with all the superglobals - the values are held in an associative array, so you can call it using the syntax above.
If you have register_globals = on, when a script loads these superglobals are automatically extracted - so you can refer to the data directly using $name rather than $_POST['name'];
This may seem simpler, but the problem is that these variables are 'unpacked' in a certain order. Say you have a session variable $_SESSION['isloggedin'] that shows whether a user is logged in. If php extracts this, you get $isloggedin = 1 when a user is logged in.
But then a sneaky hacker goes to your index page like this - index.php?isloggedin=1
The php will automatically set isloggedin to true, without authenticating the user.
And that is why you need to keep the variables in their superglobal arrays - so they cannot be overwritten.
hope that helps
adam