Differentiation between $_POST and $HTTP_POST_VARS
Hi All,
$_POST is a superglobal array and it is also known as an autoglobal array. That makes it available under any scope. Whether you are calling them inside a class, or function you need to declare it as global $_POST.
$HTTP_POST_VARS is not a superglobal array in truth. If you want to access it inside any function, you must declare it as global. Otherwise it will be considered as a normal array in current function scope which is not what you actually want.
$HTTP_POST_VARS will not be considered as a superglobal array until register_global is turned on.
- Forums:

Hmmm? I thought one is the older version?
Read this...
In short, $HTTP_POST_VARS is the old version of $_POST (introduced in PHP 4.1.0). $_POST is better in all ways and you should not use $HTTP_POST_VARS unless you have to work with a pre-4.1.0 system.
$_SERVER contains information about the script currently executing, such as it's name, the paths, headers sent in the request, etc.
Same
Hi Simon,
I got you. Do you mean that if register globals is on, then there's no different between the twos? However, if register globals is turn off, then $_POST is global, but $HTTP_POST_VARS is not global, and we have to declare it as global variable?