GET、POST メソッドを使用した PHP 登録フォームと例

フォームとは?

ウェブサイトやメールボックスにログインするときは、フォームとやり取りすることになります。

フォームは、ユーザーからの入力を取得し、処理のために Web サーバーに送信するために使用されます。

以下の図は、フォーム処理プロセスを示しています。

PHPフォーム

フォームは、入力ボックス、チェックボックス、ラジオボタンなどのグラフィカルユーザーインターフェイス項目を含む HTML タグです。

フォームは次を使用して定義されます。 … タグや GUI 項目は、input などのフォーム要素を使用して定義されます。

いつ、そしてなぜフォームを使用するのでしょうか?

  • フォームは、ユーザー入力を受け入れる柔軟で動的なアプリケーションを開発する場合に便利です。
  • フォームを使用してデータベースの既存のデータを編集できます

フォームを作成する

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'」は URL 変数名です。

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 本文内の Php_POST 値のカプセル化に時間がかかるため、Php_GET メソッドと比較してパフォーマンスが低下します。 URL に値を追加するという単純な性質により、POST メソッドと比較してパフォーマンスが高くなります。
文字列、数値、バイナリなど、さまざまなデータ型をサポートします。 値はURLに表示されるため、文字列データ型のみをサポートします。
結果はブックマークできません URL 内の値が可視になるため、結果をブックマークできます。

以下の図は、get と post の違いを示しています

GET メソッドと POST メソッドの比較

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="/ja/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>

ここに、

  • form_submitted 隠しフィールドが $_POST[] 配列に入力されているかどうかを確認し、感謝と名前のメッセージを表示します。

    $_POST[]配列のform_fobmittedフィールドに入力されていない場合は、フォームが表示されます。

その他の例

シンプルな検索エンジン

フォーム送信タイプとして 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="/ja/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>

上記ページをWebブラウザで見る

次のフォームが表示されます

シンプルな検索エンジン

大文字で「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="/ja/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>

上記のフォームをブラウザで表示する

チェックボックス、ラジオボタンの操作

姓名を入力してください

「利用規約に同意する」チェックボックスが選択されていないことに注意してください。

送信ボタンをクリックします

次のような結果が得られます

チェックボックス、ラジオボタンの操作

フォームに戻るリンクをクリックし、チェックボックスを選択します

チェックボックス、ラジオボタンの操作

送信ボタンをクリックします

次のような結果が得られます

チェックボックス、ラジオボタンの操作

製品概要

  • フォームはユーザーからデータを取得するために使用されます
  • フォームはHTMLタグを使用して作成されます
  • POST または GET メソッドを使用して、フォームをサーバーに送信して処理できます。
  • POST メソッド経由で送信されたフォーム値は、HTTP 本文にカプセル化されます。
  • GET メソッドを介して送信されたフォームの値は URL に追加され、表示されます。