The VAST majority of web hosts DO have register_globals turned ON. This is because up until just a little while ago register_globals DEFAULTED to ON, and turning it off now would break TONS of their clients scripts.
That doens't change the fact though that its good practice to act as if its turned off.
Also, from teh PHP manual on arrays:
Why is $foo[bar] wrong?
You should always use quotes around an associative array index. For example, use $foo['bar'] and not $foo[bar]. But why is $foo[bar] wrong? You might have seen the following syntax in old scripts:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
This is wrong, but it works. Then, why is it wrong? The reason is that this code has an undefined constant (bar) rather than a string ('bar' - notice the quotes), and PHP may in future define constants which, unfortunately for your code, have the same name. It works, because the undefined constant gets converted to a string of the same name automatically for backward compatibility reasons.
http://www.php.net/manual/en/language.types.array.php
Also note I"m not here to convince you of anything... but think about it. Why should POSTing to the same of diff. page make a difference? The recieving page never knows where the POSTed data came from. If you don't believe me, setup a server with register_globals turned off an dtry it yourself.