ユーザーからの入力を受け取るには、PHPとHTMLフォームの連携が不可欠です。
本記事では、フォームの送信方法(POST/GET)、$_POST・$_GETの使い方、バリデーションの基本、そしてセキュリティのためのisset()・empty()・htmlspecialchars()の正しい使い方を、一つの実用的なコードスニペットにまとめて解説します。

フォーム入力とバリデーションの基本例
以下は、HTMLフォームで名前とメールアドレスを入力し、PHP側でバリデーションと出力まで行う一体型のサンプルです。
<!-- フォームとPHP処理を同じファイルに記述 -->
<?php
$name = "";
$email = "";
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
// 名前が送信されているか
if (isset($_POST["name"]) && !empty(trim($_POST["name"]))) {
$name = htmlspecialchars($_POST["name"], ENT_QUOTES, "UTF-8");
} else {
$errors[] = "名前を入力してください。";
}
// メールが送信されているか
if (isset($_POST["email"]) && !empty(trim($_POST["email"]))) {
$email = htmlspecialchars($_POST["email"], ENT_QUOTES, "UTF-8");
// メール形式チェック
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "正しいメールアドレスを入力してください。";
}
} else {
$errors[] = "メールアドレスを入力してください。";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>フォーム入力サンプル</title>
</head>
<body>
<h2>お問い合わせフォーム</h2>
<?php if ($_SERVER["REQUEST_METHOD"] === "POST" && empty($errors)) : ?>
<p>送信ありがとうございます。</p>
<p>お名前:<?= $name ?></p>
<p>メール:<?= $email ?></p>
<?php else : ?>
<?php if (!empty($errors)) : ?>
<ul style="color:red;">
<?php foreach ($errors as $error) : ?>
<li><?= $error ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
<form method="post" action="">
<label>お名前:<input type="text" name="name" value="<?= htmlspecialchars($name, ENT_QUOTES, 'UTF-8') ?>"></label><br>
<label>メール:<input type="email" name="email" value="<?= htmlspecialchars($email, ENT_QUOTES, 'UTF-8') ?>"></label><br>
<input type="submit" value="送信">
</form>
<?php endif; ?>
</body>
</html>
このコードで学べること
- <form method="post">でPOST送信フォームを作成
- $_POSTでフォームからのデータを受け取る
- isset()で「データが送られているか」を確認
- empty()で「空かどうか」をチェック
- htmlspecialchars()でXSS対策(サニタイズ)
- filter_var()でメールアドレスの形式バリデーション
これらを一体化したフォーム処理は、実務においても非常によく使われるパターンです。
まとめ
今回は、HTMLフォームとPHPの連携に必要な基礎知識を、実用的なサンプルコードで解説しました。
- POSTとGETの基本的な違い
- $_POST・$_GETでデータを取得
- 入力チェックにisset(), empty(), filter_var()
- セキュリティ対策にhtmlspecialchars()