ホームページ  >  記事  >  バックエンド開発  >  register_globals PHP の register_globals パラメータ OFF と ON の違い ( register_globals の使い方の詳細説明)

register_globals PHP の register_globals パラメータ OFF と ON の違い ( register_globals の使い方の詳細説明)

WBOY
WBOYオリジナル
2016-07-29 08:47:58908ブラウズ

register_globals の値は次のように設定できます: On または Off それぞれの違いを説明するコードを示します。
コード:

コードをコピー コードは次のとおりです:



;



register_globals=Off の場合渡された値を受け入れるには、$_GET['user_name'] と $_GET['user_pass'] を使用する必要があります。 (注:
のメソッド属性が post の場合、$_POST['user_name'] と $_POST['user_pass'] を使用する必要があります)
register_globals=On の場合、次のプログラムは $user_name と $ を直接使用できますuser_pass を使用して値を受け入れます。
register_globals はその名の通り、グローバル変数として登録するという意味なので、Onの場合は渡された値がそのままグローバル変数として登録されて直接利用され、Offの場合は特定の配列に行く必要がありますそれを得るために。したがって、値を取得できないという上記の問題に遭遇した友人は、まず register_globals 設定が値を取得する方法と一致しているかどうかを確認する必要があります。 (表示するには、phpinfo() 関数を使用するか、php.ini を直接表示できます)
それでは、なぜ Off を使用するのでしょうか?理由は 2 つあります:
1. PHP の新しいバージョンはデフォルトで Off を使用しますが、これを On に設定することもできますが、サーバーを制御できない場合はコードの互換性が大きな問題となるため、プログラミングを開始する必要があります。これからは Off スタイルです
2. On ではなく Off を使用する必要がある理由を説明する 2 つの記事があります
http://www.php.net/manual/en/security.registerglobals.php
まだ質問が 1 つあります。以前に On スタイルで書かれた大量のスクリプトをどうするか?
前のスクリプトが適切に計画されていた場合は、config.inc.php などのパブリック インクルード ファイルがあり、このファイルに次のコードを追加してシミュレートします。
コード:

コードをコピー コードは次のとおりです:

if ( !ini_get('register_globals') )
{
extract($_POST);
extract($_GET); ;
抽出($_FILES);
抽出($_COOKIE)
{
抽出($_SESSION); }
? >


register_globals = Off は、 から渡されるデータの取得方法に影響するだけでなく、それに応じてセッションと Cookie の取得方法も次のようになります。 ]、$_COOKIE。同時に、session_register() が不要になり無効になるなど、いくつかの変更があります。具体的な変更については、PHP マニュアルのセッション処理関数を参照してください。 $_GET $_POST $_COOKIE 欠点は、変数が get post から来たのか cookie から来たのかを判断できないことであり、厳密な要件がある場合には適していません。

上記では、register_globals PHP の register_globals パラメータの OFF と ON の違い ( register_globals の使い方の詳細な説明) を、register_globals の内容も含めて紹介しました。PHP チュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。