ユーザーインタラクションとフォーム
私たちが興味を持っている多くの PHP アプリケーションの最も基本的な機能は、このページを閲覧しているユーザーと対話することです。 JavaScript に精通している場合は、多くのユーザー アクション (ページ上のリンク上でマウスを移動するなど) に直接応答するトランザクション処理モデルに慣れているでしょう。 PHP のようなサーバー側スクリプト プログラムの場合、ユーザーとの対話に使用されるアクティビティの範囲ははるかに小さく、ユーザーとの対話は、ユーザーがサーバーにリクエストを送信し、サーバーが動的ページで応答するまでの間にのみ発生します。
ユーザーが PHP と対話するための鍵は、新しい Web ページに対するユーザーのリクエストに含まれる可能性のある情報を理解することです。これから説明するように、PHP を使用すると、このタスクが非常に簡単になります。
最も簡単な方法は、「URL クエリ文字列」を使用してページリクエストの情報を出力することです。ファイル名の後に疑問符が含まれている URL を見たことがあれば、それが使用されているテクニックです。簡単な例を見てみましょう。標準の HTML ファイルを作成し (必ずしも .php 拡張子を使用する必要はありません。このファイルには PHP コードが含まれません)、次のリンクをそれに追加します:
こんにちは、ケビンです! |
これは、welcome.php というファイルへの接続ですが、このファイルへの接続中、まだページリクエストを行っています変数が渡されますで。この変数は、URL の疑問符の後にある「クエリ文字列」の一部として渡されます。この変数の名前は name で、その値は Kevin です。つまり、welcome.php をロードする接続を確立し、このファイルに含まれる PHP コードに名前が Kevin に等しいことを伝えます。
これが私たちにどのようなメリットをもたらすかを理解するには、welcome.php を見てみる必要があります。新しい HTML ファイルとして再度作成しますが、今回は .php 拡張子を使用することを忘れないでください。これにより、このファイル内に解釈する必要のある PHP コードがあることが Web サーバーに通知されます。 Web サーバーが PHP ファイルの拡張子として .php をまだ受け入れていない場合は、名前を welcome.php3 に変更する必要がある場合があります (その場合、上記のコード内の接続もそれに応じて調整する必要があります)。この新しいファイルに、次のように入力します:
echo( "Welcome to our Web site, $name!" ); ?> |
最初のファイルのリンクをクリックすると、「Web サイトへようこそ、Kevin!」というページが表示されます。URL クエリ文字列を通じて渡された変数の値は、$name という変数に自動的に割り当てられます。渡された場合、渡された変数をテキストに表示します。
必要に応じて、クエリ文字列を介していくつかの変数を渡すこともできます。この例のもう少し複雑なバージョンを見てみましょう。 HTML ファイル内のリンクを次のように変更します。
こんにちは、Kevin Yank です。 |
今回は、firstname と lastname という 2 つの変数を渡します。これらの変数は、クエリ文字列内で & 記号で区切られます。各 name=value ペアをアンパサンドで区切れば、さらに多くの変数を渡すことができます。
前に述べたように、welcome.php ファイルで次の 2 つの変数の値を使用できます:
echo( "私たちの Web サイトへようこそ、 $firstname $lastname ! " ); ?> |
すべて問題ないようですが、ユーザーと真に対話するという目標はまだ達成できていません。ユーザーは任意の情報を入力して送信できるはずです。PHP に処理させましょう。 。パーソナライズされたウェルカム ページの例を続けて、ユーザーが自分の名前を任意に入力してメッセージに表示できるようにしたいと思います。ユーザーがデータを入力できるようにするには、HTML フォームを使用する必要があります。
フォームのコードは次のとおりです:
ここに任意の名前を入力できることを除けば、このフォームの効果は上記の 2 番目の接続とまったく同じです (クエリ文字列で firstname=Kevin& lastname=Yank を使用)。送信ボタン (「GO」とマークされている) を押すと、ブラウザーは welcome.php をロードし、変数とその値をクエリ文字列に自動的に追加します。変数名は INPUT TYPE=TEXT タグの NAME 属性で、変数値はユーザーが入力した対応する内容です。
INPUT TYPE=TEXT タグの METHOD 属性は、リクエストで変数名と変数値を送信する方法をブラウザーに指示するために使用されます。 GET (上で使用したもの) はクエリ文字列で変数を渡すことを意味しますが、別のオプションもあります。クエリ文字列内の変数の表示は必ずしも満足のいくものであるとは限りません。場合によっては、技術的に実行できない場合もあります。ユーザーが大量のテキストを入力できるようにフォームに TEXTAREA タグを含めると、このテキストは長すぎてクエリ文字列に表示できず、ブラウザーでサポートされている最大 URL 長を超えます。別の方法では、ブラウザーが暗黙的に情報を渡すことができます。このメソッドのコードは、フォーム メソッドを GET から POST に変更した点を除いて、上記のフォームのコードとほぼ同じです。
このフォームは、機能的には前のフォームと同じです。唯一の違いは、ユーザーが「GO」ボタンを押したときにロードされるページの URL にはクエリ文字列が含まれないことです。これにより、クエリ文字列に表示せずに、フォームを通じて大量のデータや機密データ (パスワードなど) を送信できるようになります。一方、ユーザーがフォームの送信によって生成された結果ページをお気に入りに追加した場合、そのお気に入りには送信されたデータが含まれていないため、役に立ちません。さらに、ちなみに、AltaVista のような検索エンジンは常にクエリ文字列を使用してクエリ条件を送信します。その主な理由は、ユーザーが将来同じ検索を実行するためにクエリ結果ページをお気に入りに追加しやすくするためです。 URLに含まれています。
ここでは、フォームを使用して PHP とのユーザー対話を実現する基本原則について説明します。今後の例では、より高度な問題とテクニックについて説明します。