ホームページ  >  記事  >  バックエンド開発  >  PHPのregister_globalsパラメータOFFとONの違い(register_globalsの使い方を詳しく解説)_PHPチュートリアル

PHPのregister_globalsパラメータOFFとONの違い(register_globalsの使い方を詳しく解説)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:20:561129ブラウズ

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

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


;/form> ;


register_globals=Off の場合、次のプログラムは、受信時に渡された値を受け入れるために $_GET['user_name'] と $_GET['user_pass'] を使用する必要があります。 (注: のメソッド属性が post の場合、$_POST['user_name'] と $_POST['user_pass'] を使用する必要があります)
register_globals=On の場合、次のプログラムは $user_name と $_POST['user_pass'] を直接使用できます。 $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 の取得方法も $_SESSION にする必要があります。 []、$_COOKIE。同時に、session_register() が不要になり無効になるなど、いくつかの変更があります。具体的な変更については、PHP マニュアルのセッション処理関数を確認してください。実際には、$_REQUEST の途中にある内容です。は $_GET $_POST $_COOKIE から取得されますが、欠点は、変数が get post から取得されたのか cookie から取得されたのかを判断できないことであり、厳密な要件がある場合には適していません。




http://www.bkjia.com/PHPjc/325030.html
www.bkjia.com

tru​​e
http://www.bkjia.com/PHPjc/325030.html

技術記事

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