Technically, you shouldn't loose data, make sure register_globals are set to Off. Super-variables such as $POST, $GET, $COOKIE, $GLOBALS and $SESSION have their own memory space and can be accessed from any scope. The vague one that confuses people is $REQUEST (which - ready for this could mean a value from $GET or a value from $POST - depending on the setting of your variables_order in php.ini. But it will only be set if it is populated by a form. If you explicitly define it like the example below it will be empty.... yes it's somewhat confusing.
$POST["elementname"] retrieves the form element from a method="POST".
$GET["elementname"] retrieves the form element from a method="GET" or passed thru the URL
Try this exercise:
<?php
$abc = "Private scope abc";
$_GET["abc"] = "123";
$_POST["abc"] = "321";
$_SESSION["abc"] = "session abc";
$_GLOBALS["abc"] = "globals abc";
$_REQUEST["abc"] = "request abc";
mydisplayvars()
//-- you can cut the code below into
//-- another file and then do an include
//-- of that file from this file and see how
//-- variables react with includes....
function mydisplayvars()
{
echo "_GET = {$_GET['abc']}<br />";
echo "_POST = {$_POST['abc']}<br />";
echo "_SESSION = {$_SESSION['abc']}<br />";
echo "_GLOBALS = {$_GLOBALS['abc']}<br />";
echo "_REQUEST = {$_REQUEST['abc']}<br />";
echo "abc = {$abc}";
}
?>