GET、POST メソッドを使用した PHP 登録フォームと例
⚡ スマートサマリー
PHPのフォーム処理では、HTMLフォームからユーザー入力を取得し、$_POSTおよび$_GETスーパーグローバル変数を使用してサーバー上で処理します。このチュートリアルでは、登録フォームを作成し、POSTメソッドとGETメソッドについて説明し、それらを比較し、フィールド、チェックボックス、検索入力の処理方法を示します。

フォームとは?
ウェブサイトやメールボックスにログインする際、あなたはフォームとやり取りしていることになります。
フォームは、ユーザーからの入力を取得し、処理のために Web サーバーに送信するために使用されます。
以下の図は、フォーム処理プロセスを示しています。
フォームとは、入力ボックス、チェックボックス、ラジオボタンなど、グラフィカルユーザーインターフェースの要素を含むHTMLタグのことです。
フォームは以下を使用して定義されます。 …タグやGUIアイテムは、入力などのフォーム要素を使用して定義されます。
いつ、そしてなぜフォームを使用するのでしょうか?
- フォームは開発時に便利ですping ユーザー入力を受け付ける、柔軟で動的なアプリケーション。
- フォームを使用すると、データベースに既に存在するデータを編集できます。
フォームを作成する
HTMLタグを使用してフォームを作成します。 以下は、フォームを作成するために必要なものの最小限のリストです。
- フォームタグの開閉…
- フォーム送信タイプ POST または GET
- 提出 URL 送信されたデータを処理する
- 入力ボックス、テキストエリア、ボタン、チェックボックスなどの入力フィールド。
以下のコードは、シンプルな登録フォームを作成します。
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> </body> </html>
上記のコードを Web ブラウザーで表示すると、次のフォームが表示されます。
ここに、
- … フォームの開始タグと終了タグです
- action=”registration_form.php” method=”POST” は送信先を指定します URL そして提出の種類。
- 名/姓: 入力ボックスのラベルです
- 入力ボックスのタグです
- は新しい行タグです
- フォームが送信されたかどうかを確認するために使用される非表示の値です。
- これは、クリックするとフォームをサーバーに送信して処理するボタンです。
フォームデータをサーバーに送信する
フォームの action 属性は送信方法を指定します URL データを処理する機能です。method属性は送信タイプを指定します。
PHP POSTメソッド
- これは、HTTP POSTメソッドで送信された値を取得するために使用される、PHPに組み込まれたスーパーグローバル配列変数です。
- 配列変数には、プログラム内のどのスクリプトからもアクセスできます。 グローバルな範囲を持ちます。
- この方法は、フォームの送信値を URL.
- POSTメソッドを使用する良い例としては、ログイン情報をサーバーに送信する場合が挙げられます。
構文は次のようになります。
<?php
$_POST['variable_name'];
?>
ここに、
- 「$_POST[…]」は PHP配列
- 「'variable_name'」はフォームのフィールド名です。
PHPのGETメソッド
- これは、HTTP GETメソッドで送信された値を取得するために使用される、PHPに組み込まれたスーパーグローバル配列変数です。
- 配列変数には、プログラム内のどのスクリプトからもアクセスできます。 グローバルな範囲を持ちます。
- このメソッドはフォームの値を表示します URL.
- 検索結果をブックマークできるため、検索エンジンのフォームに最適です。
構文は次のようになります。
<?php
$_GET['variable_name'];
?>
ここに、
- 「$_GET[…]」はPHP配列です。
- 「'variable_name'」は URL 変数名。
GET メソッドと POST メソッドの比較
| POST | GET |
|---|---|
| 値が表示されません URL | 表示される値 URL |
| HTTPリクエストの本文を介して送信されるため、値の長さに制限はありません。 | 値の長さに制限があり、通常は 255 文字です。これは、値が URL文字数の上限はブラウザによって異なりますのでご注意ください。 |
| HTTPボディにPOST値をカプセル化するのに時間がかかるため、GETメソッドと比較してパフォーマンスが低下します。 | POST メソッドと比較して、値を追加するという単純な性質のため、パフォーマンスが高くなります。 URL. |
| 文字列、数値、バイナリなど、さまざまなデータ型をサポートしています。 | 値は文字列で表示されるため、文字列データ型のみをサポートします。 URL |
| 検索結果をブックマークすることはできません | 値は視覚的に確認できるため、結果をブックマークできます。 URL |
下の図は、GETとPOSTの違いを示しています。
登録フォームデータの処理
登録フォームは、フォームの action 属性で指定されたとおりにデータをそれ自体に送信します。
フォームが送信されると、値は$_POSTスーパーグローバル配列に格納されます。
PHP の isset 関数を使用して、フォームの値が $_POST 配列に入力されているかどうかを確認し、データを処理します。
登録フォームを修正し、データを処理するPHPコードを組み込みます。修正後のコードは以下のとおりです。
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> // this code is executed when the form is submitted <h2>Thank You <?php echo $_POST['firstname']; ?> </h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p>Go <a href="/registration_form.php">back</a> to the form</p> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
ここに、
- $_POST[]配列内の非表示フィールドform_submittedが入力されているかどうかを確認し、入力されている場合は感謝のメッセージと名前を表示します。$_POST[]配列内のform_submittedフィールドが入力されていない場合は、フォームが表示されます。
その他の例
シンプルな検索エンジン
PHPのGETメソッドをフォーム送信タイプとして使用するシンプルな検索エンジンを設計します。
簡単にするために、 PHPのif文 出力を決定します。
上記の登録フォームに同じ HTML コードを使用し、最小限の変更を加えます。
<html> <head> <title>Simple Search Engine</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_GET['form_submitted'])): ?> <h2>Search Results For <?php echo $_GET['search_term']; ?> </h2> <?php if ($_GET['search_term'] == "GET"): ?> <p>The GET method displays its values in the URL</p> <?php else: ?> <p>Sorry, no matches found for your search term</p> <?php endif; ?> <p>Go <a href="/search_engine.php">back</a> to the form</p> <?php else: ?> <h2>Simple Search Engine - Type in GET </h2> <form action="search_engine.php" method="GET"> Search Term: <input type="text" name="search_term"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
上記のページをウェブブラウザで表示してください。
以下のフォームが表示されます。
GETとすべて大文字で入力し、送信ボタンをクリックしてください。
以下が表示されます。
下の図は、 URL 上記の結果について。
注意してください URL search_termとform_submittedの値が表示されました。 GET以外の文字列を入力して、送信ボタンをクリックして、どのような結果が出るか確認してみてください。
チェックボックス、ラジオボタンの操作
ユーザーがチェックボックスまたはラジオボタンを選択しない場合、値は送信されません。ユーザーがチェックボックスまたはラジオボタンを選択した場合、値「1」または「true」が送信されます。
登録フォームのコードを変更し、ユーザーが利用規約に同意するためのチェックボタンを追加します。
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> <?php if (!isset($_POST['agree'])): ?> <p>You have not accepted our terms of service</p> <?php else: ?> <h2>Thank You <?php echo $_POST['firstname']; ?></h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p> Go <a href="/registration_form2.php">back</a> to the form</p> <?php endif; ?> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form2.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <br> Agree to Terms of Service: <input type="checkbox" name="agree"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
上記のフォームをブラウザで表示してください。
氏名(姓と名)を記入してください。
「利用規約に同意する」チェックボックスが選択されていないことに注意してください。
送信ボタンをクリックしてください。
以下の結果が得られます。
フォームに戻るリンクをクリックし、チェックボックスを選択してください。
送信ボタンをクリックしてください。
以下の結果が得られます。










