[PHP-users 5922] Re: PHP3 でPHP4 風にコーディングしたい
KOYAMA Tetsuji
php-users@php.gr.jp
Wed, 06 Mar 2002 16:20:38 +0900
小山です。
At Wed, 06 Mar 2002 15:19:59 +0900,
Mickey Okoshi wrote:
> 今後のPHP4ではregister_blobals=offが標準推奨とされ、かわりに
> $_POSTやimport_request_variables()などが導入されたわけですが、
> 「まだPHP3だが、PHP4への移行に備えてPHP4推奨の安全なコーディング
> に今から直しておきたい」という場合、どうするのが良いでしょうか?
>
> PHP3でregister_blobals=offの場合、$HTTP_POST_VARS,$HTTP_GET_VARS
> などを使うのだと思いますが、$_REQUESTにあたるものが無いので、
> 「POSTでもGETでもデータを渡せる」ページなど改造が面倒そうです。
PEAR の Auth.php にあるメソッドを参考にして、こんなのを書いてみまし
た。
function import_variables($type) {
$var = null;
switch (strtolower($type)) {
case 'server':
if (isset($_SERVER)) {
$var = $_SERVER;
} else {
$var = $GLOBALS['HTTP_SERVER_VARS'];
}
break;
case 'session':
if (isset($_SESSION)) {
$var = $_SESSION;
} else {
$var = $GLOBALS['HTTP_SESSION_VARS'];
}
break;
case 'post':
if (isset($_POST)) {
$var = $_POST;
} else {
$var = $GLOBALS['HTTP_POST_VARS'];
}
break;
case 'get':
if (isset($_GET)) {
$var = $_GET;
} else {
$var = $GLOBALS['HTTP_GET_VARS'];
}
break;
case 'request':
if (isset($_REQUEST)) {
$var = $_REQUEST;
}
else {
$var = import_variables('get');
$post = import_variables('post');
reset($post);
while (list($key, $val) = each($post)) {
$var[$key] = $val;
}
}
break;
default:
break;
}
if (empty($var)) {
$var = array();
}
return $var;
}
この手のラッパーを書いてしまうのが、移行するのが分かっているソースの
場合良いのではないでしょうか。使い方は
$vars = import_variables('request');
echo $vars['name'];
という感じです。
--
小山 哲志@ビート・クラフト
koyama@beatcraft.com
koyama@hoge.org