リスト 2 の表記は確かに便利ですが、これは PHP ディレクティブ register_globals が on に設定されている場合にのみ使用できます。バージョン 4.2 より前は、これがデフォルト設定であり、多くの PHP 開発者はこの問題にさえ気づいていませんでした。ただし、バージョン 4.2 以降では、 register_globals のデフォルト設定がオフになっています。この場合、変数が作成されず、適切な値で初期化されないため、この表記は正しく機能しません。
ただし、これらの変数は他の方法でも初期化できます。 1 つ目の方法は、 register_globals の値を変更することです。共有サーバーを使用している開発者の多くは、サーバー全体のこの値を変更する権限を持っていませんが、特定のサイトの動作を変更することはできます。 .htaccess ファイルにアクセスできる場合は、次のディレクティブを追加して register_globals を有効にできます:
php_flag register_globals on
この機能が利用可能かどうかが不確実であるため、開発者は使用しないことをお勧めします。この方法で変数を取得してください。それで、あなたの選択肢は何ですか?
システムがバージョン 4.1 以降を実行している場合、他のオプションは、import_request_variables() を使用してグローバル変数のコレクションを選択的に登録することです。この関数を使用して、get、post、cookie の値をインポートし、必要に応じて各項目にプレフィックスを付けることができます。例:
import_request_variables(gp, "formval_");
echo "Ship = ".$formval_ship;
echo "
";
echo " Tripdate = ".$formval_tripdate;
echo "
";
echo "Exploration = ".$formval_exploration;
echo "
";
echo "Contact = ". $ formval_contact;
?>
ここでは、get 値と post 値がインポートされます (c を使用して cookie 値をインポートします)。p は g の後に続くため、post 値は同じものの get 値を上書きします。名前。
しかし、多くの開発者と同様に、バージョン 4.1 以降を実行していない場合はどうすればよいでしょうか?
フォーム値コレクションへのアクセス
古いバージョンを実行している場合、またはグローバル変数を使用したくない場合は、$HTTP_GET_VARS 配列と $HTTP_POST_VARS 配列を使用するオプションがあります。これらのコレクションは非推奨になりましたが、依然として利用可能であり、依然として広く使用されています。これらが使用されなくなった場合は、バージョン 4.1 で追加された $_GET 配列と $_POST 配列に置き換えられます。
これら 2 種類の配列の型はハッシュ テーブルです。ハッシュ テーブルは、整数ではなく文字列値によってインデックスが付けられた配列です。フォームを操作するときは、リスト 3 に示すように、名前によって値にアクセスできます。 '船'] ;
echo $ship_value;
echo "
";
$tripdate_value = $HTTP_GET_VARS['tripdate'];
echo $tripdate_value;
echo "
";
$exploration_value= $HTTP_GET_VARS['exploration'];
echo $exploration_value;
echo "
";
$contact_value = $HTTP_GET_VARS['contact'];
echo $contact_value;
?>
このメソッドを使用すると、各フィールドの値を名前で取得できます。
単一の名前、複数の値
現時点では、各名前は 1 つの値のみに対応します。複数の値がある場合はどうなりますか?たとえば、乗組員の種のリスト ボックスでは、乗組員という名前で複数の値を送信できます。
理想的には、これらの値を配列として保持して、明示的に取得できるようにする必要があります。これを実現するには、HTML ページにわずかな変更を加える必要があります。配列として送信するフィールドには、crew[] のように角括弧で名前を付ける必要があります:
リスト 4. HTML ページを変更します
...