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

フォームとは何ですか?

Webサイトまたはメールボックスにログインすると、フォームを操作していることになります。

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

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

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

フォームは

タグを使用して定義され、GUIアイテムは入力などのフォーム要素を使用して定義されます。

このチュートリアルでは、次のことを学びます-

フォームを使用するのはいつ、なぜですか?

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

フォームを作成する

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属性は、送信タイプを指定します。

PHPPOSTメソッド

  • これは、HTTPPOSTメソッドを介して送信された値を取得するために使用される組み込みのPHPスーパーグローバル配列変数です。
  • 配列変数には、プログラム内の任意のスクリプトからアクセスできます。 それはグローバルスコープを持っています。
  • この方法は、フォームの投稿値をURLに表示したくない場合に最適です。
  • postメソッドを使用する良い例は、ログインの詳細をサーバーに送信する場合です。

構文は次のとおりです。

<?php
 $_POST['variable_name'];
?>

ここに、

  • 「$ _ POST[…]」はPHP配列です
  • 「 ‘variable_name’」はURL変数名です。

PHPGETメソッド

  • これは、HTTPGETメソッドを介して送信された値を取得するために使用される組み込みのPHPスーパーグローバル配列変数です。
  • 配列変数には、プログラム内の任意のスクリプトからアクセスできます。 それはグローバルスコープを持っています。
  • このメソッドは、URLのフォーム値を表示します。
  • ユーザーが結果にブックマークを付けることができるため、検索エンジンのフォームに最適です。

構文は次のとおりです。

<?php
$_GET['variable_name'];
?>

ここに、

  • 「$ _ GET[…]」はPHP配列です
  • 「 ‘variable_name’」はURL変数名です。

GETメソッドとPOSTメソッド

役職 取得する
URLに表示されない値 URLに表示される値
HTTPの本文を介して送信されるため、値の長さに制限はありません。 値の長さには通常255文字の制限があります。 これは、値がURLに表示されるためです。 文字の上限はブラウザによって異なりますのでご注意ください。
HTTPボディでのPhp_POST値のカプセル化に時間がかかるため、Php_GETメソッドと比較してパフォーマンスが低下します URLに値を追加するという単純な性質により、POSTメソッドと比較して高いパフォーマンスを発揮します。
文字列、数値、バイナリなど、さまざまなデータ型をサポートします。 値はURLに表示されるため、文字列データ型のみをサポートします
結果をブックマークすることはできません URLの値が表示されるため、結果にブックマークを付けることができます

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

登録フォームデータの処理

登録フォームは、フォームのアクション属性で指定されているように、それ自体にデータを送信します。

フォームが送信されると、値は$ _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="https://www.guru99.com/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>

ここに、

その他の例

シンプルな検索エンジン

フォーム送信タイプとして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="https://www.guru99.com/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="https://www.guru99.com/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に表示されます。

Hope this helps!

Source link