4

私が持っているのと同じページで

$hello = 'Hello!';
$_POST['hello'] = '123';

$hello をエコーすると、'Hello!' の代わりに 「123」を取得します。同じ名前の変数と $_POST 変数をどのように処理すればよいですか?

これは実際の問題の例です:

このようなサインアップ フォームがあります (これはフィールドの縮小サンプルです)。各入力フィールドにはラベルがあり、ラベル内の文字列変数は入力と同じ名前です。

<form id="form1" action="post.php">
  <span class="label"><?=$fullname?></span>
  //$fullname='Please enter your name';
  <input name="fullname" id="fullname" type="text">

  <span class="label"><?=$email?></span>
  //$email='Please enter your email';
  <input name="email" id="email" type="text">

  <input name="button1" id="button1" type="submit">
</form>

フォームを送信すると、同じページに投稿され、ユーザーが入力した値が表示されます。それだけで、変数 $fullname の値を表示する $fullname の代わりに、$_POST['fullname'] の値が表示されます。なぜこれが起こるのですか?

4

5 に答える 5

5

おそらく、何年も前から反対されてきた register_globals が有効になっているでしょう :) 詳細はこちらをご覧ください: http://php.net/manual/en/security.globals.php

于 2013-02-21T12:46:15.633 に答える
3

問題はおそらくregister_globalsphp の .ini ファイルにあります。これをオフにして、php を再起動すると、修正されるはずです。

これを試して、コード実行時の設定を確認してください。

echo ini_get("register_globals");
于 2013-02-21T12:46:19.320 に答える
1

register_superglobalsがオフの場合は、スクリプトで同様のことを行っています。

お気に入り

foreach($_REQUEST as $key => $val) // or $_POST or $_GET
    $$key = $val;
于 2013-02-21T12:54:19.130 に答える
1

フォーム宣言で method="POST" 属性を設定する必要があります。また、register_globals オプションが有効になっている可能性があります。

于 2013-02-21T12:46:06.570 に答える
1

設定を確認php.iniしてくださいregister_globals。ほとんどの場合、オンに設定されているため、オフにする必要があります。

于 2013-02-21T12:46:19.187 に答える