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

⚡ スマートサマリー

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

  • 📝 フォームの機能: HTMLフォームは、テキストボックス、チェックボックス、ボタンなどのフィールドを通してユーザー入力を収集し、それをサーバー側のスクリプトに送信します。
  • 📬 POSTメソッド: $_POST は HTTP ボディに値を送信します。ping 彼らを URLこれは、ログイン情報や機密データに適しています。
  • 🔗 GETメソッド: $_GET は値を URLそのため、検索結果をブックマークすることができ、検索フォームには最適です。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ POSTとGETの比較: POSTには実質的な長さ制限はなく、多くのデータ型をサポートしています。GETはより短く、文字列のみで、可視性があります。
  • ✅ 入力処理: isset() 関数は、スクリプトがフィールドの値を読み取って使用する前に、フィールドが送信されたかどうかを確認します。
  • ☑️ チェックボックス: チェックボックスはチェックされたときにのみ値を送信するため、isset() はユーザーが同意したか、オプションを選択したかを確認します。
  • 🤖 AIアシスト: AIツールは、検証済みの安全なフォームを生成し、フォームが正しく送信されない理由を診断するのに役立ちます。

PHPフォームの処理

フォームとは?

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

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

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

PHPフォーム

フォームとは、入力ボックス、チェックボックス、ラジオボタンなど、グラフィカルユーザーインターフェースの要素を含む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の違いを示しています。

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

上記のフォームをブラウザで表示してください。

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

氏名(姓と名)を記入してください。

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

送信ボタンをクリックしてください。

以下の結果が得られます。

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

フォームに戻るリンクをクリックし、チェックボックスを選択してください。

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

送信ボタンをクリックしてください。

以下の結果が得られます。

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

よくあるご質問

$_GET は、 URL クエリ文字列、$_POST はリクエストボディから値を読み取り、$_REQUEST は GET、POST、および Cookie データをマージします。値の取得元を正確に把握するためには、特定の配列を使用することをお勧めします。

生の入力は決して信用しないでください。filter_var() または各フィールドのルールを使用して検証し、出力は htmlspecialchars() でエスケープして XSS 攻撃を防いでください。データベースへの書き込みにはプリペアド ステートメントを使用して SQL インジェクションを防いでください。

一般的な原因としては、フォームメソッドがPOSTではなくGETであること、入力フィールドにname属性が欠落していること、アクションが間違っていることなどが挙げられます。 URLまたは、ファイルアップロード用のマルチパート暗号化タイプが欠落している可能性があります。これらの項目をフォームと照らし合わせて確認してください。

はい。AIはHTMLフォームの作成に加え、サーバーサイド検証、CSRF対策、エスケープ処理された出力も可能です。 Revデプロイする前に、各フィールドのルールを確認し、セキュリティチェックがアプリケーションと一致していることを確認してください。

はい。フォームとハンドラーを共有すれば、AIがメソッドの不一致、名前属性の欠落、誤ったアクションパス、または送信を妨げる検証分岐を検出し、修正案を提示します。