初心者でもできる!PHPで問い合わせフォームを作る5つのステップ

PHPで問い合わせフォームを作成する初心者向けのステップバイステップガイドPHP
この記事は約9分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読むことで、あなたもPHPを使った問い合わせフォームの作り方をマスターできるようになります。

初心者の方でもステップバイステップで進めていくので、難しく感じることなく学ぶことができます。

それでは、まずは問い合わせフォームの基本構造から見ていきましょう。

●問い合わせフォームの基本構造

問い合わせフォームは、一般的に次の3つの部分で構成されます。

  1. フォーム画面:ユーザーが情報を入力する画面です。
    HTMLとCSSで作成します。
  2. バリデーション:ユーザーから送信されたデータが適切であるかを確認します。
    PHPで処理します。
  3. メール送信:バリデーションが成功した場合、問い合わせ内容を特定のメールアドレスに送信します。
    これもPHPで処理します。

●PHPでの問い合わせフォームの作り方

それでは、具体的に問い合わせフォームを作ってみましょう。

一連の流れをサンプルコードと共に紹介します。

○サンプルコード1:HTMLでフォームを作る

まずは、ユーザーが情報を入力するフォーム画面を作成します。

HTMLで基本的なフォームを作るサンプルコードを紹介します。

<form action="contact.php" method="post">
    <label for="name">お名前:</label>
    <input type="text" id="name" name="name" required>
    <label for="email">メールアドレス:</label>
    <input type="email" id="email" name="email" required>
    <label for="message">メッセージ:</label>
    <textarea id="message" name="message" required></textarea>
    <input type="submit" value="送信">
</form>

このコードでは、お名前、メールアドレス、メッセージを入力するためのテキストボックスを作成しています。

また、各入力欄はrequired属性を付けて必須項目にしています。

○サンプルコード2:PHPでフォームデータを受け取る

次に、ユーザーから送信されたデータを受け取るためのPHPコードを見てみましょう。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
?>

このコードでは、$_POSTスーパーグローバル変数を使ってフォームから送信されたデータを受け取っています。

この例では、お名前、メールアドレス、メッセージの3つのデータを受け取っています。

○サンプルコード3:バリデーションを行う

送信されたデータが適切な形式であるかをチェックするためのバリデーションを行います。

バリデーションは、メールが正しい形式で、すべてのフィールドが記入されていることを確認するために重要です。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
    $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
    $message = filter_input(INPUT_POST, 'message', FILTER_SANITIZE_STRING);

    if (!$name || !$email || !$message) {
        $error = "すべてのフィールドを正しく入力してください。";
    } else {
        // メール送信処理
    }
}
?>

このコードでは、filter_input関数を使ってフォームから送信されたデータを受け取り、同時にバリデーションを行っています。

具体的には、名前とメッセージには文字列としてのサニタイズを、メールアドレスにはEメールとしてのバリデーションを施しています。

全てのフィールドが正しく入力されていない場合は、エラーメッセージを表示します。

○サンプルコード4:メールを送信する

フォームデータのバリデーションが成功したら、次はメールの送信を行います。

下記のサンプルコードでは、mail関数を用いてメールを送信します。

<?php
$to = 'info@example.com';
$subject = '問い合わせフォームからのメッセージ';
$headers = "From: $email\r\n";

if (mail($to, $subject, $message, $headers)) {
    $success = "メッセージが正常に送信されました。";
} else {
    $error = "メッセージの送信に失敗しました。";
}
?>

このコードでは、mail関数を使って問い合わせ内容を特定のメールアドレスに送信しています。

この例では、送信先、件名、メッセージ、送信元の情報を指定して、メールを送信しています。

●応用例とサンプルコード

これまでの基本的な処理をさらに強化するための応用例をいくつか見てみましょう。

特定の条件下でのみ受け付けるようなカスタムバリデーションや、問い合わせがあった場合に自動で返信メールを送信するなど、さまざまなカスタマイズが可能です。

○サンプルコード5:カスタムバリデーション

ここでは、名前が特定の文字数以上であることを求めるカスタムバリデーションを追加します。

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 前述のバリデーションは省略

    // 名前が10文字以上であることを確認
    if (strlen($name) < 10) {
        $error = "名前は10文字以上で入力してください。";
    } else {
        // メール送信処理
    }
}
?>

このコードでは、strlen関数を使って名前が10文字以上であることを確認しています。

10文字未満の場合はエラーメッセージを表示します。

○サンプルコード6:自動返信メールの設定

問い合わせたユーザーに対して自動で返信メールを送信する処理を追加します。

<?php
$autoReplySubject = "お問い合わせありがとうございます";
$autoReplyMessage = "以下の内容でお問い合わせを受け付けました。\n\n"
    . "名前: $name\n"
    . "メールアドレス: $email\n"
    . "メッセージ:\n$message\n";

mail($email, $autoReplySubject, $autoReplyMessage, $headers);
?>

このコードでは、ユーザーが問い合わせを行った際に自動的に返信メールを送信しています。

この例では、お問い合わせの内容をそのままユーザーに返信しています。

●注意点と対処法

問い合わせフォームの作成には、多くの注意点が存在します。

ここでは、特に重要なポイントとその対処法について説明します。

まず、スパム対策が重要です。

問い合わせフォームがあると、自動化ツールによるスパムが増える可能性があります。

これを防ぐためには、例えばreCAPTCHAのようなツールを利用すると良いでしょう。

次に、ユーザーの入力データは必ずサーバー側で検証しましょう。

フォームから送られてくるデータは、必ずしも信頼できるものではありません。

そのため、サーバー側でのバリデーションは絶対に欠かせません。

また、メール送信にはPHPのmail関数を使うことが一般的ですが、この関数は設定や使い方を間違えると、メールが送信されない、またはスパムと判断される可能性があります。

そのため、メール送信には信頼性の高いライブラリやサービス(PHPMailerやSendGridなど)の利用を検討すると良いでしょう。

●カスタマイズ方法

問い合わせフォームは、自身のウェブサイトのデザインや要件に合わせてカスタマイズすることが可能です。

例えば、CSSを使用してビジュアルを変更したり、JavaScriptを使用して動的な動作を追加したりできます。

○サンプルコード7:CSSでデザインをカスタマイズする

ここでは、CSSを使用して問い合わせフォームのデザインをカスタマイズする例を紹介します。

.form-container {
    width: 80%;
    margin: 0 auto;
    padding: 20px;
    border: 1px solid #ccc;
    border-radius: 5px;
}

.form-container input[type=text],
.form-container input[type=email],
.form-container textarea {
    width: 100%;
    padding: 15px;
    margin: 5px 0 10px 0;
    border: none;
    background: #f1f1f1;
}

.form-container input[type=submit] {
    background-color: #4CAF50;
    color: white;
    padding: 15px 20px;
    border: none;
    cursor: pointer;
    width: 100%;
    margin-bottom:10px;
}

.form-container input[type=submit]:hover {
    opacity: 0.8;
}

このコードでは、問い合わせフォーム全体や入力フィールド、送信ボタンなどの見た目を調整しています。

これにより、問い合わせフォームの見た目をウェブサイトのデザインに合わせてカスタマイズすることができます。

まとめ

この記事では、PHPを使って問い合わせフォームを作成する方法について詳しく解説しました。

その基本構造から、HTMLとPHPを使ったフォーム作成、バリデーション、メールの送信まで、一通りの流れを学びました。

また、それらの基本的な部分だけでなく、より高度なカスタムバリデーションや自動返信メールの設定など、応用的な技術についても紹介しました。

さらに、問い合わせフォーム作成における注意点と対処法、カスタマイズ方法についても説明しました。

特にスパム対策やサーバー側でのデータ検証などは重要なポイントです。

問い合わせフォームは、ウェブサイト運営において重要な役割を果たします。

そのため、この記事で学んだ知識を活かして、ユーザーフレンドリーで安全な問い合わせフォームを作成しましょう。

これにより、ユーザーからの信頼を得ることができるでしょう。

以上が、PHPでの問い合わせフォーム作成についての解説です。

是非とも、あなたのウェブサイトで活用してみてください。