ホームページ >php教程 >php手册 >PHPの register_globals パラメータがOFFとONの違い( register_globals の使い方の詳細説明)

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

WBOY
WBOYオリジナル
2016-06-13 12:02:20864ブラウズ

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 の新しいバージョンはデフォルトでオフを使用します。これをオンに設定することもできますが、サーバーを制御できない場合、コードの互換性が大きな問題になります。今からオフ スタイルでプログラミングを始めたほうが良いです
2. ここでは、なぜオンではなくオフを使用する必要があるのか​​を説明する 2 つの記事を示します

http://www.php.net/manual/en/ セキュリティ。 registerglobals.php

ここで別の質問があります。On スタイルで記述された多数のスクリプトをどうするかです。
前のスクリプトが適切に計画されており、config.inc.php などのパブリック インクルード ファイルがある場合は、このファイルに次のコードを追加してシミュレートします。
コード:

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

if ( ! ini_get(' register_globals') )
{
extract($_POST)
extract($_SERVER);抽出($ _ENV);
抽出($_COOKIE);

if ( isset($_SESSION) )
{
抽出($_SESSION)
}
?>


register_globals = Off は、 から渡されるデータの取得方法、URL に影響するだけでなく、同様にセッションと Cookie の取得方法にも影響します。 $_SESSION[]、$_COOKIE である必要があります。同時に、session_register() が不要になり無効になるなど、セッション処理にもいくつかの変更があります。具体的な変更点については、PHP マニュアルのセッション処理関数を確認してください。

の途中の内容です。 $_REQUEST は実際には $_GET $_POST $_COOKIE から取得されますが、欠点は変数が get post から取得されたのか cookie から取得されたのかを判断できないことであり、厳密な要件がある場合には適していません。

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