[PHP-users 16623]Re: Webブラウザからの引数?の取り込み
kazz SUEISHI
kazu_sueishi @ mbi.nifty.com
2003年 7月 10日 (木) 16:32:37 JST
初めまして。 末石と言います。
> > Redhat 9, Apache 2.0.46, MySQL 4.0.13, PHP 4.3.2を再インストールしました。
> > 以前は、http://hoge.jp/test.php?test=aaaa
> > という形で、次のようなスクリプトで引数が取り込めたと思うのですが
> > うまくいきません。
> > <? print '$test'; ?>
>
> register_globals=off
>
> が原因かと・・・。PHP 4.2.0以降からは標準で'off'になっていますので、以前
> は特に意識しなくても <? print '$test'; ?> が使えたと思います。php.iniの
> 記述を
>
> register_globals=on
>
> にすれば、同じように使えると思います。
> ただ、PHP 4.2.0以降から仕様が変わったのには意味があるようです。
> 私も詳しくは理解できてはいませんので、明確な事はいえないのですがセキュリ
> ティ上の問題だと思います。この場合は、
>
> <? echo $HTTP_GET_VARS['test']; ?>
>
> とすれば、register_globals=offのままでも、取り込めます。もっと書きますと、
> やはりセキュリティ上の問題(だったと思います^^;)で最近では
>
> <? echo $_GET['test']; ?>
>
> の方が推奨されているようです。これは、POSTやSESSION、COOKIEでも同じ事だ
> と思います。
自分の環境は、Windows2000 IIS 5.0 PostgreSQL 7.3.2 PHP 4.3.2
ですので定かではありませんが
php.ini
register_globals=off のままでも
<?
import_request_variables("GP", "rv_"); ←:詳細はマニュアルを参照してください。
を指定すると
グローバルスコープにインポートされる全ての変数名の前に「rv_」が付加され
print $rv_test;
or
print "$rv_test";
?>
の使用が可能です。
ご参考までに!
PHP-users メーリングリストの案内