PHPの基礎体力さんの、値の受け渡しのページの、「外部変数が獲得できない」のところに解説があります。
PHP4.2.0以降では、 register_globals が、デフォルトで OFF に設定されているため、「$変数名」という書式では、スクリプトに渡された変数を獲得できないそうです。
register_globals が、デフォルトで OFF になった理由は同サイトのセキュリティのページの「register_globals = On の恐怖」にあります。
PHPの基礎体力さんのところのPHP Tips参考になる記事が沢山あります。(ありがたく。)