ホームページ >php教程 >php手册 >PHP での HTML フォームの使用

PHP での HTML フォームの使用

WBOY
WBOYオリジナル
2016-06-21 08:58:381026ブラウズ

HTML フォームを通じてユーザーが送信した情報を簡単に操作できる機能は、常に PHP の強みの 1 つです。実際、PHP バージョン 4.1 では、この情報にアクセスする新しいメソッドがいくつか追加され、以前のバージョンで最も一般的に使用されていたメソッドの 1 つが事実上削除されています。この記事では、PHP の古いバージョンと新しいバージョンの両方を使用して、HTML フォームで送信された情報を操作するさまざまな方法を検討します。この記事では、単一の値を検討することから始めて、次に、一般に使用可能なフォーム値にアクセスできるページを構築します。

注: この記事は、PHP バージョン 3.0 以降を実行している Web サーバーにアクセスできることを前提としています。 PHP 自体と HTML フォームの作成についての基本的な理解が必要です。

HTML フォーム

この記事を読むと、さまざまなタイプの HTML フォーム要素が PHP がアクセスできる情報をどのように提供するかがわかります。この例では、2 つのテキスト フィールド、2 つのチェックボックス、および複数の項目を入力できる選択ボックスで構成される単純な情報フォームを使用しました。 🎜>
ツアー情報

ミッション情報







<名前:



;td colspan="2">ミッション目標:























指定されたメソッドがない場合、フォームはブラウザによって追加されるデフォルトのメソッド GET を使用します。以下に示すように、フォームの値を URL に追加します:

http://www.vanguardreport.com/formaction.php?

ship=Midnight +Runner&tripdate=12-15-2433&exploration =yes&crew=snertal&crew=gosny

図 1 はフォーム自体を示しています。

図 1. HTML フォーム

古い方法: グローバル変数へのアクセス

リスト 2 に示すコードは、フォームの値をグローバル変数として処理します。

リスト 2. 値をグローバル変数として作成する


echo "Ship = ".$ship

echo "
";

echo "Tripdate = ".$tripdate;

echo "
";

echo "Exploration = ".$exploration; 🎜 >echo "
";

echo "Contact = ".$contact

生成された Web ページに送信された値が表示されます。 :

船 = ミッドナイト ランナー

旅行日 = 2433 年 12 月 15 日

探検 = はい

連絡先 =

(あなたと同様)後で説明するように、ボックスがチェックされていないため、Contact には値がありません)。

リスト 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 以降を実行している場合、もう 1 つのオプションは、import_request_variables() を使用してグローバル変数のコレクションを選択的に登録することです。この関数を使用して、get、post、cookie の値をインポートし、必要に応じて各項目にプレフィックスを付けることができます。例:


import_request_variables(gp, "formval_");

echo "Ship = ".$formval_ship; "
";

echo "Tripdate = ".$formval_tripdate;

echo "
"; " .$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 に示すように、名前によって値にアクセスできます。

リスト 3. ハッシュ テーブル

$ ship_value = $HTTP_GET_VARS['ship'];

echo $ship_value;

echo "

$tripdate_value = $ HTTP_GET_VARS['tripdate '];

echo $tripdate_value;

echo "
";

echo $exploration_value;

echo "
"

$contact_value = $HTTP_GET_VARS['contact']; $contact_value;

?>

このメソッドを使用すると、各フィールドの値を名前で取得できます。

単一の名前、複数の値
現時点では、各名前は 1 つの値のみに対応します。複数の値がある場合はどうなりますか?たとえば、乗組員の種のリスト ボックスでは、乗組員という名前で複数の値を送信できます。

理想的には、これらの値を配列として保持して、明示的に取得できるようにする必要があります。これを実現するには、HTML ページにわずかな変更を加える必要があります。配列として送信するフィールドは、crew[] のように角かっこで名前を付ける必要があります。

リスト 4. HTML ページを変更します

...


>


...
変更を加えると、実際にはフォームの値が配列になります:




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

...

$crew_values = $HTTP_GET_VARS['crew']

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

echo "
";

echo "1) ".$crew_values[1]; ;br />";

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 "
";

。 ..
しかし、問題は価値観ではない場合もあります。





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
;旅行日:


exploration


連絡先
乗組員の種類: