If $HTTP_POST_VARS['foo'] is blank, but $foo isn't, then you have a problem with your design --- not a big one, necessarily. It's simply that the vars are not being POSTed to the page upon which you are calling them.
If $foo works, though, then your server must be set with register_globals enabled, which is generally considered to be a rather large security risk.
As for the question, "is the syntax different", the answer is, it can be, but doesn't have to be, so try it either way.