2010-11-19 16 views
0

私は今、しばらくの間PHPをやってきましたが、今までは助けは必要ありませんでしたが、今回は完全に混乱しました。私は1つのecho文で1行のコードを持っています。PHP変数へのURLパラメータ

問題:URLパラメータには、同じ名前のPHP変数値が自動的に設定されます。

エコー$:このような「VAR_NAME」という名前の変数、と

http://www.example.com?var_name=abc123

と1行のPHPスクリプト:たとえば、私はこのような「VAR_NAME」という名前のパラメータを使用してURLを持っていますvar_name;

私はのページに出力を得る:

ABC123これは、PHPページにコードのみです!この動作は、私が$ _GETの動作を期待する方法ですが、私はそれを使用していません。

この問題はPHP 5.2を実行している特定のサーバーでのみ発生しています。私は4つの他のサーバーでテストしましたが、この動作はありません。私はそれがPHPの設定の問題だと思うが、デフォルトの設定を実行しており、設定のドキュメントで何も見つけることができない。助けてください。

ありがとうございます。 Matt-

答えて

6

これはregister globals.と呼ばれています。サーバのグローバル設定が有効になっている場合は、これを行うことができます。

いずれのサーバーにもグローバルを登録しないことをお勧めします。システムにセキュリティ上の欠陥が導入される可能性があるためです。

これに伴うセキュリティ上の欠陥の例。

if($auth == true) 
{ 
    // sensitive stuff here 
} 

authが単なる通常の変数である場合、私はURLでこれを行うことができます。

http://www.example.com/page.php?auth=true

、機密情報を参照してください。

+0

お返事ありがとうございます。 register_globalsを使用したことはありません。それは脆弱な穴です。みんなありがとう。 –

0

おそらくregister_globalsが有効になっている:

は情報のためthe manualを参照してください。