ネクストベータ代表Blog

WEBシステム SI屋の代表のブログです。

*

関数 wp_unregister_GLOBALS() 完了

      2014/12/05

register_globals が On の環境でも Off と同様の状態にする関数を定義

定義ファイル :/blog/wp-includes/load.php

呼出元 :/blog/wp-settings.php

この関数は
register_globals が On の環境でも Off と同様の状態にする方法
を目的としています。

phpマニュアルに記載があります。

私はどのように register_globals を扱うべきですか?

グローバル変数の登録機能の使用法

関数
ini_get()
isset()
die()
array_merge()
is_array()
array()
in_array()
isset()
unset()

php.ini
register_globals が有効でない場合は以降の処理は行わない
「register_globals = On」の場合に問題になる。
OFF(false)の場合は何も処理する必要なし。
「return」で関数から抜る。

$_REQUEST に GLOBALS が含まれている場合はグローバル変数が上書きされる可能性があるため、処理を終了

削除しないグローバル変数名をキーとした配列を作成

WordPressのオリジナル
table_prefix

グローバル変数として登録される変数名をキーにした配列を作成
登録されたグローバル変数を削除

2005.12.25(Sun)
>>PHP
*register_globals が On の環境でも Off と同様の状態にする方法(2)

はてなの日記(register_globals (t_komuraの日記))の方にいろいろと書いていたのですが、その後、Yet more on cleaning input data (phpguru.org) というページで既にこの問題について対処方法が提示されていました。この方法で十分のように思います。

この関数を元に、少し書き直したコードを掲載しておきます。実際の処理内容は同一ですが、in_array() を使用しないようにしている点が異なっています。必要に応じて関数にする、使用しないグローバル変数も削除するなど修正を行って使用すれば良いと思います。これをスクリプトの最初に置いておくとグローバル変数の上書き問題とグローバル変数の汚染については回避できそうです。

(2005.12.26 修正)

変数を使用すると変数汚染が避けられないことに気が付きましたので、コードを修正しました。やはり関数にした方が良さそうです。

以下のような関数にすれば、HTTP_*_VARS などのあまり使用しない変数も削除することができます。

Yet more on cleaning input data (phpguru.org)
register_globals が On の環境でも Off と同様の状態にする方法 (2005.05.05 の過去ログから)

外部リンク
個人的なメモと備忘録

http://www.asahi-net.or.jp/~wv7y-kmr/note/2005-12.html

 - 関数