ホームページ > php教程 > php手册 > PHP で HTML フォームを使用する (2)

PHP で HTML フォームを使用する (2)

WBOY
リリース: 2016-06-21 09:15:36
オリジナル
1100 人が閲覧しました

リスト 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 ページを変更します

...







。 ..




変更を加えた後、フォームの値を取得すると実際に配列が生成されます:




リスト 5. 配列として変数にアクセスする

...

$crew_values = $HTTP_GET_VARS ['乗組員'];

echo "0) ".$crew_values[0];

echo "
";

echo "1) ".$crew_values[1];

echo "
";

echo "2) ".$crew_values[2];

...




これで、ページの送信後に複数の値が表示されます:




0) snertal

1) gosny

2)




まず、これはインデックスが0から始まる配列であることに注意してください。最初に見つかった値は位置 0 にあり、次の値は位置 1 にあり、以下同様です。この場合、2 つの値のみを送信したため、3 番目の項目は空です。

通常、送信される項目の数はわかりません。そのため、配列であるという事実を利用して、sizeof() 関数を使用して、各項目を呼び出さずに送信された値の数を判断できます。直接:




リスト 6. 配列のサイズを決定します

...

for ($i = 0; $i < sizeof($crew_values); $i++) {

echo $crew_values[ $i];

echo "
";

}

...




ただし、問題がそれほど重要ではない場合もありますが、まったく問題はありません



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート