10フォームデータの処理
フォームとは?
フォームは、ユーザーが情報を入力してサーバーに送信するための仕組みです。
このチャプターではPHPでのフォームデータの処理方法について解説していきます。Webサイトのお問合せフォームなどにも使われておりPHPの中でもかなり大事な知識になるのでしっかり学んでいきましょう!
フォームの基本構成
<form action="送信先のURL" method="送信方法">
<!-- 入力フィールド -->
<input type="text" name="フィールド名">
<button type="submit">送信</button>
</form>formタグの詳細
action: データ送信先(例: process.php)
method: データ送信方法(GETまたはPOST)
・ユーザー入力フィールド。
type: 入力の種類(例: text, email, password)。
name: PHPでデータを受け取る際に使う名前。
・フォーム送信ボタン。
実際に触ってみる
では、Lesson11_PHPディレクトリ内の「src」ディレクトリに新たに「form」ディレクトリを追加し、その中に「index.php」を作成しましょう。

作成できたら以下のコードをコピペして下さい。
<?php
// POSTリクエストかどうか確認
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 受け取ったデータを変数に格納
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
// データを画面に表示
echo "<h1>フォームから受け取ったデータ</h1>";
echo "名前: " . $name . "<br>";
echo "メールアドレス: " . $email . "<br>";
echo "コメント: " . $message . "<br>";
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>フォームの例</title>
</head>
<body>
<h1>お問い合わせフォーム</h1>
<form action="index.php" method="post">
<!-- 名前 -->
<label for="name">名前:</label>
<input type="text" id="name" name="name" required>
<br><br>
<!-- メール -->
<label for="email">メールアドレス:</label>
<input type="email" id="email" name="email" required>
<br><br>
<!-- コメント -->
<label for="message">コメント:</label>
<textarea id="message" name="message" rows="4" required></textarea>
<br><br>
<!-- 送信ボタン -->
<button type="submit">送信</button>
</form>
</body>
</html>
保存出来たら以下のリンクにアクセスしてください。
http://localhost:8080/form/index.php
すると以下の画面が表示されるはずです。

それぞれの項目を入力して送信ボタンを押してみましょう。

すると、フォームに入力した値が画面上に表示されました。
それではコードの解説をしていきます。
1. PHP部分(サーバーサイド処理)
<?php
// POSTリクエストかどうか確認
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 受け取ったデータを変数に格納
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
// データを画面に表示
echo "<h1>フォームから受け取ったデータ</h1>";
echo "名前: " . $name . "<br>";
echo "メールアドレス: " . $email . "<br>";
echo "コメント: " . $message . "<br>";
}
?>各部分の説明
リクエストの種類をチェック$_SERVER['REQUEST_METHOD'] を使って、現在のリクエストが「POST」であるかどうかを確認しています。
$_SERVER['REQUEST_METHOD'] を使うことで送信されたデータがPOST通信なのかGET通信なのかを判別することが可能です。
GETとPOSTの違い
GETメソッド
GETの目的の多くはデータの「取得」です。
検索など何かの情報を取得するときにGETは使用されます。
例:検索エンジンでキーワードを検索する場合、検索結果ページを表示するために使います。
データの送信方法
URLにデータが含まれる
例:http://example.com/search?query=apple
URLの「?」以降に、パラメータとして情報が追加されます。
特徴
・ データがURLに見える
例えば、誰かがあなたのブラウザ画面を見た場合、送信した情報(検索キーワードなど)が丸見えになります。
・ ブックマークや履歴に残る
同じURLなら、後で再度同じ結果を確認できます。
・送信できるデータ量に制限がある
長いテキストや大量のデータを送るのには向いていません。
具体例
検索フォームの場合
シンプルなデータの取得:
検索キーワードのように、短くシンプルなデータならURLに含めても問題ありません。
ブックマーク可能:
検索結果のページはURLで管理されるため、後から同じ検索結果を見たいときに便利です。
POSTメソッド
POSTの目的はデータの「送信」・「登録」です。
例:お問い合わせフォームや会員登録など、ユーザーが入力した情報をサーバーに送る場合に使います。
データの送信方法
HTTPリクエストの「本文」にデータが含まれる
URLには表示されず、隠れて送信されるため、見た目には分かりません。
特徴
・ データがURLに表示されない
個人情報や長文のコメントなど、隠しておきたい情報の送信に適しています。
・ 送信できるデータ量が多い
たくさんのデータや長い文章でも問題なく送れます。
・ キャッシュや履歴に残りにくい
ブラウザの履歴に送信内容が表示されないので、プライバシーが守られやすいです。
具体的例
お問い合わせフォームの場合
POSTメソッドを使う理由:
セキュリティ:
名前やメールアドレス、コメントといった個人情報はURLに表示されるのは好ましくないため。
データ量:
コメント欄などで長い文章を入力する可能性があるので、GETだとデータが途中で切れてしまう恐れがあります。
2. HTML部分(クライアントサイド表示)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>フォームの例</title>
</head>
<body>
<h1>お問い合わせフォーム</h1>
<form action="index.php" method="post">
<!-- 名前 -->
<label for="name">名前:</label>
<input type="text" id="name" name="name" required>
<br><br>
<!-- メール -->
<label for="email">メールアドレス:</label>
<input type="email" id="email" name="email" required>
<br><br>
<!-- コメント -->
<label for="message">コメント:</label>
<textarea id="message" name="message" rows="4" required></textarea>
<br><br>
<!-- 送信ボタン -->
<button type="submit">送信</button>
</form>
</body>
</html>各部分の説明
フォームの作成
<form action=”index.php” method=”post”>
このフォームは、送信されると同じファイル(index.php)にデータを送る設定になっています。また、データ送信方法は「POST」になっています。
入力フィールドの配置
名前の入力 <label for="name">名前:</label> <input type="text" id="name" name="name" required> ユーザーが名前を入力するためのテキストボックス。required 属性が付いているため、必ず入力しなければなりません。
メールアドレスの入力 メールアドレス:
メールアドレスを入力するフィールド。type=”email” により、メール形式かどうかの簡単なチェックが自動で行われます。
コメントの入力 コメント:
複数行のテキストを入力できるエリアです。rows=”4″ で表示される行数を指定し、こちらも required 属性で必須入力となっています。
送信ボタン
送信ボタンをクリックすると、フォームのデータが index.php に対してPOSTリクエストとして送信されます。
全体の流れ
- ユーザーの入力
ブラウザ上でフォームが表示され、ユーザーは「名前」「メールアドレス」「コメント」を入力します。 - データの送信
ユーザーが「送信」ボタンをクリックすると、フォームのデータがPOSTリクエストとして同じページ(index.php)に送信されます。 - サーバーでのデータ処理
PHPの部分が実行され、POSTリクエストで送られてきたデータが取得され、変数に格納されます。 - 結果の表示
取得したデータを画面に表示し、ユーザーに入力内容を確認させます。
このように、PHPとHTMLを組み合わせることで、ユーザーからデータを受け取り処理し、結果を表示する基本的な仕組みを作ることができます。
実際にコードを動かしながら、各部分がどのように連携しているのか確認すると理解が深まります!
コメントを残す