PHPでフォームを扱う基本

ユーザーからの入力を受け取るには、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()

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com