HTML フォームを通じてユーザーが送信した情報をより簡単に操作できる機能は、常に PHP の強みの 1 つです。実際、PHP バージョン 4.1 では、この情報にアクセスするための新しいメソッドがいくつか追加されており、以前のバージョンから最も一般的に使用されていたメソッドの 1 つが事実上削除されています。この記事では、PHP の古いバージョンと新しいバージョンの両方を使用して、HTML フォームで送信された情報を操作するさまざまな方法を検討します。この記事では、単一の値を研究することから始めて、次に、一般に使用可能なフォーム値にアクセスできるページを構築します。 注: この記事は、PHP バージョン 3.0 以降を実行している Web サーバーにアクセスできることを前提としています。 PHP 自体と HTML フォームの作成についての基本的な理解が必要です。 HTML フォーム この記事を読むと、さまざまなタイプの HTML フォーム要素が PHP がアクセスできる情報をどのように提供するかがわかります。この例では、2 つのテキスト フィールド、2 つのチェックボックス、および複数の項目を入力できる選択ボックスで構成される単純な情報フォームを使用しました。 リスト 1. HTML フォーム
ツアー情報 ミッション情報
不在時指定されたメソッドの場合、フォームはデフォルトのメソッド 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 "Tripdate = ".$tripdate; echo "
" ; echo "Exploration = ".$exploration; echo "
"; echo "Contact = ".$contact; ?> 生成された Web ページには、送信された値が表示されます: Ship = Midnight Runner Tripdate = 12-15-2433 = yes Contact = (後で説明するように、リスト 2 の表記は確かに便利ですが、PHP ディレクティブ register_globals が以前のバージョンに設定されている場合にのみ使用できます。 4.2 では、これがデフォルト設定であり、多くの PHP 開発者はこの問題に気づいていませんでしたが、バージョン 4.2 以降では、 register_globals のデフォルト設定が off になっており、この場合、変数が正しく動作しません。ただし、これらの変数は他の方法で初期化できます。共有サーバーを使用する多くの開発者は、サーバー全体のこの値を変更できません。 .htaccess ファイルにアクセスできる場合は、次のディレクティブを追加して register_globals を有効にすることができます。この機能が利用可能かどうかは不明であるため、開発者は次のことを行うことをお勧めします。システムがバージョン 4.1 以降を実行している場合、この関数を使用してグローバル変数コレクションを選択的に登録することもできます。必要に応じて、get、post、cookie の値をインポートし、各項目にプレフィックスを追加します。 "; echo "Exploration = ".$formval_contact ?> ここで、post 値がインポートされます。 c を使用して Cookie 値をインポートします。p は g の後に続くため、post 値は同じ名前の get 値を上書きします。 しかし、多くの開発者と同様に、バージョン 4.1 以降を実行していない場合はどうなるでしょうか? フォーム値のコレクションへのアクセス 古いバージョンを実行している場合、またはグローバル変数を使用したくない場合は、$HTTP_GET_VARS 配列と $HTTP_POST_VARS 配列を使用するオプションがあります。これらのコレクションは非推奨になりましたが、依然として利用可能であり、依然として広く使用されています。これらが使用されなくなった場合は、バージョン 4.1 で追加された $_GET 配列と $_POST 配列に置き換えられます。 これら 2 種類の配列の型はハッシュ テーブルです。ハッシュ テーブルは、整数ではなく文字列値によってインデックスが付けられた配列です。フォームを操作する場合は、リスト 3 に示すように、名前で値にアクセスできます。 ハッシュ テーブル $ship_value = $HTTP_GET_VARS[ship]; echo $ship_value; "; $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 ページを変更します...
... 1 回変更を加えると、フォームの値を取得すると実際には配列になります。 リスト 5. 変数に配列としてアクセスする... $crew_values = $HTTP_GET_VARS[crew] echo "0) ".$crew_values[0] ; echo "
"; echo "1) ".$crew_values[1]; echo "2) ".$crew_values[2]; ... ページを送信すると、複数の値が表示されます。 0) snertal 1) gosny 2 ) 最初に注意すべきことは、これは 0 から始まるインデックスの配列であるということです。最初に見つかった値は位置 0 にあり、次の値は位置 1 にあります。この場合、I のみです。値が 2 つ送信されるため、3 番目の項目は空になります。通常、送信される項目の数はわかりません。そのため、配列であることを利用して、sizeof() 関数を使用して値の数を決定できます。リスト 6. 配列のサイズを決定する... for ($i = 0; $i "; } ... ただし、値が多すぎるのではなく、値がまったく存在しないという問題が発生することがあります。 チェックボックスは、存在する場合にのみ送信されます。実際に選択されているかどうかは、チェックボックスが消えていることによってわかります。現実: ユーザーがチェックボックスをクリックしていない場合は、isset() 関数を使用して値が設定されているかどうかを明示的に確認できます。チェックボックスが送信されました... $contact_value = $ HTTP_GET_VARS[contact]; echo $contact_value; if (isset($contact_value)) { //チェックボックスがクリックされました } else { //チェックボックスがクリックされませんでした } ... すべてのフォームを取得値 チェックボックス フィールドは、フォームから期待されるものです。値の名前が完全に確実ではない可能性がある状況の例です。多くの場合、すべてのフォーム値に共通の方法でアクセスするルーチンがあると便利です。 幸いなことに、$HTTP_GET_VARS とその類似物は単なるハッシュ テーブルであるため、配列のいくつかのプロパティを使用して操作できます。たとえば、array_keys() 関数を使用して、すべての潜在的な値名のリストを取得できます。 リスト 8. フォーム値名のリストを取得します... $form_fields = array_keys($HTTP_GET_VARS) for ($i = 0; $i "; } else { echo $thisField ." = ". $thisValue; }実際に送信されたすべてのデータ データ: ship = Midnight Runner tripdate = 12-15-2433 exploration = yes crew = snertal crew = gosny 最後に 1 つ注意してください: これで、送信するあらゆるフォーム値を収容できるフォーム アクション ページが完成しました。少し考えてみる必要があります。これは、PHP プログラマーを驚かせることがよくあります。 場合によっては、図 2 に示すように、設計者は送信ボタンの代わりにグラフィカル ボタンを使用することを選択します。そのコードはリスト 10 に示されています。 リスト 10. グラフィック ボタンを追加する ... Crew sp
http://www.bkjia.com/PHPjc/531723.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/531723.html技術記事 HTML フォームを通じてユーザーが送信した情報をより簡単に操作できる機能は、常に PHP の強みの 1 つです。実際、PHP バージョン 4.1 では、この情報にアクセスする新しい方法がいくつか追加されています...