[PHP-users 7177] Re: import_request_variables() in 4.2.0

HOTTA Michihide php-users@php.gr.jp
Fri, 26 Apr 2002 22:09:51 +0900


堀田@諫早市です。

# 送信に失敗したようなので再送です。2通逝ったらすみません:)

On Fri, 26 Apr 2002 18:15:42 +0900 
Subject [PHP-users 7168] Re: import_request_variables() in 4.2.0
Yasuo Ohgaki <yohgaki@yahoo.co.jp> wrote:

> HOTTA Michihide wrote:
> > 4.2.0 移行用に import_request_variables() を試しています。
> > マニュアルによれば、第2引数には import したい変数の prefix を
> > 指定するようですが、どうも何を指定しても import してくれない
> > ようです。

(snip)

> 単純ミスをされています。
> 
> print_r($GLOBALS);
> 
> を入れると解ると思います。

ありがとうございます。

単純ミスというか、仕様を勘違いしていました。マニュアルの記述
からは読みきれませんでした…。

サマリとして、動くようになったスクリプトを再掲します。
[PHP-users 7164]では、コマンドラインの引数のところで少々ボケを
かましていました。

<?php
print   <<< EOD
<HTML><BODY>
<FORM METHOD="POST" ACTION="${_SERVER['PHP_SELF']}?get_val=1">
<INPUT TYPE="TEXT" NAME="post_val">
</FORM>

EOD;
printf("_GET:<BR>\n");
print_r($_GET);
printf("<BR>\n_POST:<BR>\n");
print_r($_POST);
import_request_variables("gpc", "rvar_");
foreach($GLOBALS as $key => $value)   {
  if (ereg("^rvar_", $key))   {
    $new_val = ereg_replace("^rvar_", "", $key);
    $$new_val = $value;
  }
}
printf("imported:<BR>\n");
printf("get_val=%s<BR>\n", $get_val);
printf("post_val=%s<BR>\n", $post_val);
print   <<< EOD
</BODY></HTML>
EOD;
?>
hotta@star ~$ w3m -dump http://localhost/~hotta/test.php?get_val=1
[                    ]
_GET:
Array ( [get_val] => 1 )
_POST:
Array ( ) imported:
get_val=1
post_val=

PS.
マニュアルの記述を、以下のようにしてみてはいかがでしょうか。
…と考えてはみたものの、いまいちいい表現が思い浮かびません。

[現行]
注意 引数prefixはオプションですが、接頭辞を指定しないか空の文字
列を接頭辞として指定すると、通知レベルエラーが発生します。

[改善案]
注意 引数prefixを指定すると、第一引数で指定したカテゴリに属する
各変数名の頭に文字列prefixが接頭辞として付加された変数群が生成
されます。この引数はオプションであり、接頭辞を指定しないか空の
文字列を接頭辞として指定すると、通知レベルエラーが発生します。
-- 
堀田 倫英 <hotta@net-newbie.com> <http://www.net-newbie.com>