[PHP-users 7288] Re: フォームの変数について
Masaaki Kikuzawa
php-users@php.gr.jp
Mon, 06 May 2002 11:17:47 +0900
菊澤 と申します。
On Mon, 06 May 2002 05:36:30 +0900
naoki kishida <kishida@fk.urban.ne.jp> wrote:
> また、コーディング標準の違いの話かもしれませんが
> <form action="submitmsg.php?id=<?=$id?>" method="post">
> とするより
> <form action="submitmsg.php" method="post">
> <input type="hidden" name="id" value="<?=$id?>">
> のほうが好きです。
上のケースで、$_POST['id']がどうなっているのか
ちょっと、おもしろそうなので、テストしてみました。
結果:
上のケースでは、$_POST['id']には値が入ってませんでした。
#$_GET['id']には、入っていました。
また、下記のテストスクリプトを実行したところ、
$_POST['id']と$_GET['id']に別々な値が入っていました。
$idには、$_GET['id']が入っていました。
#variables_orderの順に入れているのですね。
結論:
$_POST['id']と$_GET['id']と$idの使用方法を注意する
必要があり、無用な混乱を招きそうなので、上のような
使用方法は、しない方が良いと思います。
テスト環境:
Kondara Linux 2000
Apache 1.3.14
PHP 4.1.2
php.iniの関連項目の設定値
variables_order = "EGPCS"
register_globals = On
テストスクリプト:
<?
header("Content-type: text/html; charset=euc-jp");
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
echo "\$_POST['id'] = {$_POST['id']}<br>";
echo "\$_GET['id'] = {$_GET['id']}<br>";
echo "\$id = $id<br>";
}
else {
echo <<<EOD
<form action="index.php?id=2" method="post">
<input type='hidden' name='id' value='1'>
<input type='submit' value='ぽちっとな'>
</form>
EOD;
}
?>
結果:
$_POST['id'] = 1
$_GET['id'] = 2
$id = 1
--------------------------------------------
菊澤 正明 mailto:kikuzawa@coo-co-ltd.co.jp
(株)空 Coo co.,ltd. http://www.coo-cyber.com