Web ページ間の情報転送
この章の焦点
なぜ HTTP は普及し続けるのでしょうか?
GET パラメータ
GET スタイルを使用した別の URL
フォーム変数の処理
PHP スーパー配列
この章では、Web ページ間でのデータの受け渡しに関するいくつかの内容を簡単に説明します。このような情報は PHP に固有のものではなく、PHH/HTML または HTTP プロトコル自体の重要な部分です。
HTTP はステートレスです
Web サービスについて覚えておくべき最も重要なことの 1 つは、HTTP プロトコル自体がステートレスであるということです。詩的な魂をお持ちなら、各 HTTP リクエストは孤立していて、居場所がなく、まったく未知の存在であると言えるかもしれません...あなたはそのことを知っています。あまり詩的ではない人のために説明すると、これは、各 HTTP リクエスト (各リクエストとページ転送) が他のすべてのコンテンツから独立しており、クライアントの ID をまったく知らず、メモリを持たないことを意味します。それぞれのリクエストは独立したプロセスを生成し、ファイル サービスという一見小さいけれど重要なタスクを完了し、その後自動的に消えます (これは非常に非情に聞こえますが、おそらく「処理可能な状態に戻る」と言えるでしょう)。
Web サイトが非常に緩やかな一方向ナビゲーション (ページ 1 からページ 2、ページ 2 からページ 3 など) で設計されている場合でも、PTTP アシスタントは、誰かが閲覧するページ 2 がページ 1 から来たものであるかどうかをまったく知りませんし、気にしません。したがって、HTML 自体を通じてページ 1 に変数を設定してページにインポートすることはできません。 HTML を使用してフォームを表示し、そのフォームを使用して情報を入力することはできますが、他の方法を使用して情報を別のページまたは別のプログラムに転送しない限り、別のページに移動すると変数は消えてしまいます。
これが、PHPのようなフォーム処理技術が輸入される理由です。 PHP は、あるページから別のページに渡された変数を取得し、さらに使用することができます。 PHP 関数はこの種のデータ転送機能に非常に優れており、Web サイトのさまざまなタスクをより速く簡単に完了できます。
HTML フォームは、1 つの Web ページからデータを渡すための Web サイトで最も便利な方法です。Cookie やセッションなど、複数の Web ページ間で状態を維持するための永続的な方法は他にもたくさんあります。これらについては、第 27 章の関数で説明します。この章では、Web ページ間で情報を転送するためのより基本的な手法、つまり HTTP、GET および POST メソッドを使用して Web ページを動的に生成し、データを処理する手法に焦点を当てます。
ASP プログラマーは、これを見ると「PHP は最低だ!」と言うかもしれません。それは、ASP で使用したセッション変数が非常に魔法だからです。これは誰かのバブルを崩壊させるためではありませんが、Microsoft はセッション変数を保存するために Cookie を使用することを計画していますが、これはあらゆる潜在的な問題への扉を開きます。
GET パラメーター
GET メソッドは、パラメーターを URI [Uniform Resource Indicator、一貫したリソース インジケーター] の一部として扱います。一部のユーザーは、渡されたページから URI (Uniform Resource Indicator、一貫したリソース ロケーター) を使用することに慣れています。別のページへ。フォーム処理に使用される場合、GET は疑問符 (?) を区切り文字として使用して ACTION 属性で指定された URL に変数名と値を追加し、すべてのコンテンツを処理を提供するテクノロジー (この場合は Web サーバー) に送信します。
これは GET メソッドを使用した HTML フォームの例です (ファイルをteam_select.html に保存します):
>
< HEAD >
< GET の例、部分1
< ;Root , root, root for the :< BR >
< SELECT NAME = "Team" SIZE=2 >
ユーザーが選択して [送信] ボタンをクリックすると、ブラウザはこれらの要素を以下の順序で、間にスペースを入れずに結合します:
ACTION という単語の後に、引用符で囲まれた URL (http://localhost/baseball.php)
疑問符 (?) は、次の文字が GET を形成することを示します文字列
NAME 変数、等号、および一致する VALUE (チーム = Cubbies)
"&" 記号と次のペア "NAME = VALUE" (Submit = Submit); サーバークエリ文字列の長さ制限が許す限り。 、これらは & を使用します。分離された名前と値の組み合わせは何度でも繰り返すことができます。
これにより、次のような URL 文字列が形成されます:
(http://locahost/baseball .php ? Team = Cubbies&Submit = Select)
この文字列は、ブラウザのアドレス空間に送信される新しいリクエストになります。上記のフォームが送信された後、フォームを処理する PHP スクリプト (baseball.php) はリクエスト文字列の末尾から GET 変数を取得し、これらの変数に対して対応する操作を実行します。がリテラル文字列に挿入されます。
次のプログラム コードは、PHP が元の HTML フォームを処理するために使用するフォーム処理部分です。
< HEAD >
< TITLE >