PHPでお問い合わせフォームを作るには?方法やコード例を紹介

phpでお問い合わせフォームの作り方
お問い合わせフォーム

お問い合わせフォームは、企業とユーザーをつなぐツールであり、Webサイトに欠かせません。しかし、フォームの作り方に困る企業担当者は多いようです。初心者向けのマークアップ言語であるHTMLや、比較的身に着けやすいPHPを使って、お問い合わせフォームを作ることはできるのでしょうか。この記事ではその疑問にお答えするとともに、実際のお問い合わせフォーム作成方法、コード記述例について解説します。

PHPの知識不要で、カンタンにできるフォームツールをお探しなら、クライゼルのフォーム作成ツールをご利用ください。

お問い合わせフォームはPHPで作れる?

結論から申し上げると、PHPを使ってお問い合わせフォームを作ることは可能です。ここでは、そもそもPHP・HTMLがどのような役割を果たす言語なのかを解説します。

PHPとHTMLの役割について

HTMLは、静的なWebページを作成できる言語です。静的とは「どのユーザーがどのタイミングで、どのようにアクセスしても、まったく同じ結果を表示すること」を意味します。

対してPHPは、動的なWebページの作成に用いられます。「アクセス方法やタイミング、ユーザーによる何らかの操作に応じて内容が変化すること」が動的なWebページの特徴です。

Webページを作成できる共通点がありますが、前者はフロントエンド、後者はサーバーサイドの言語と区別されます。もちろん、タグや文法も異なりますが、両者を組み合わせることで、その力をさらに発揮できます。

お問い合わせフォームはPHPで作成可能

PHPを用いた、お問い合わせフォーム作成は可能です。HTMLのみでは作成できませんが、PHPを合わせることで実現可能になります。HTMLでおおよその枠組みを作ってから、PHPでフォームとしての機能を実装する流れが基本になります。

お問い合わせフォームの作り方(PHP編)

一般的に、お問い合わせフォームは「入力ページ」「確認ページ」「完了ページ」から成ります。それぞれPHPで作成することになるため、新規でPHPファイルを3つ用意しておきましょう。ここでは、具体的なフォーム作成方法を詳しく解説します。

1.HTMLでフォームの型を作成

はじめに行うのは、HTMLによる骨組みの作成です。あらかじめ作成しておいた、入力フォーム用のPHPファイルにコードを記述していきます。使用するコードエディターによっては、文字コードや使用言語などを自動で指定し、ひな形を用意してくれる便利な機能があります。HTMLの記述方法については、以下の記事で詳しく解説していますので、ご参照ください。

2.PHPで入力ページを作成

入力フォームを作成するにあたって、入力された値をPHPに受け渡すよう設定する必要があります。その際に用いるのが、POST通信という手法です。フォーム全体をform要素で囲い、method属性とaction属性を付与します。method属性にはpostを、action属性には値の送信先となるファイル名を指定しましょう。

ここで留意しておきたいのが、フォームのセキュリティ対策についてです。
例えば、action属性の値を「index.php」とした場合、PHPファイル「index.php」に値が渡されます。ここで、POSTで渡されてきたデータを適切に処理しておかなければ、クロスサイトスクリプティング(XSS)やSQLインジェクション等の攻撃のリスクが高まることになります。
このリスクを低減させる一つの手段として、入力データをエスケープ処理させるというものが挙げられます。

ここからはPHPでの記述となるため注意しましょう。htmlspecialcharsという関数を用いることで、プログラムコードで利用する特殊文字をHTMLエンティティに変換し、プログラムの実行を無効化することができます。
尚、method属性をgetではなくpostとしたのも、通信の安全性を高め、個人情報を守る観点からです。

3.PHPで確認ページを作成

フォームへの入力後に、確認ページへの切り替えと、入力内容の表示が行われるようにPHPを書いていきます。記述するのは先ほどから引き続き、入力フォーム用のPHPファイルです。まずはheader関数とLocationにより、情報の送信が行われた際に画面が切り替わるようにします。次に、PHPの$_SESSION変数や$_POST変数を用いて確認ページ用のPHPファイルにデータが渡されるように設定しましょう。

渡されたデータを確認ページに表示させる準備が整ったところで、今度は確認ページ用のPHPファイルを開き、再度HTMLを記述します。内容を表示させるためには、table要素を用いるのが最もシンプルかつ簡単な方法でしょう。そして再びPHPで$_SESSIONを記述し、参照した値に基づいて変数の格納を行うように設定します。

これで、フォームに入力した情報を確認ページへ引き継いで表示させることができるようになりました。ここで使用した確認ページ用のPHPファイルには、完了ページへデータを受け渡すためのコードも記述します。method属性とaction属性を用いて、送信ボタンが押された場合の挙動を設定しましょう。method属性でpostを、action属性で完了ページ用のPHPファイル名をそれぞれ指定すれば、完了ページへ移動するようになります。

4.PHPで完了ページを作成

最後に完了ページを作成します。すでにデータの受け渡しに関するコードは記述しているため、完了ページ用のPHPファイルを開きましょう。まずはHTMLを記述し、完了メッセージが表示されるエリアの構成を整えます。表示するメッセージは、入力内容の通知メールの送信に成功した場合と失敗した場合で分岐させるため、このあと記述するif文の内部に埋め込みます。

通知メールを送信するために使用するのは、mailという関数です。フォームに入力された内容に問題がなければ、メールアドレスなどの引数をもとに関数が実行され、メール送信が成功します。もちろんタイトルやメール本文は自由に決められるため、事前に考えておきましょう。

もう一つ重要なのが、メール送信に失敗した場合の処理です。これには、送信失敗時にfalseで返答するという関数の性質を利用します。if文を使い、送信成功時とfalseが返ってきた場合とで異なるメッセージが表示されるようにしましょう。また、入力されたメールアドレスは、関数実行時に入力値のまま使われます。そのため、コードを記述する段階でしっかりと安全性を確保しておくことが重要です。

セキュリティ対策に関しては、ページそのものに対する不正アクセスを防ぐためにも、別途施す必要があります。

お問い合わせフォーム作成に必要な要素

PHPを用いるからにはコーディングが必須となりますが、ビジュアル的な思考をもって作成にあたることも大切です。ここでは、お問い合わせフォーム作成に必要となる要素を解説します。お問い合わせフォームの各ページの構造などをイメージしてみましょう。

基本の入力フォーム

基本的な入力項目は、名前・会社名・メールアドレスが挙げられます。これらは「どこ」の「誰」なのか、「どのように」連絡を取るのかを知るために必要です。最低限、この3つは必須項目として設定することが求められます。「必須」の文字や「※」の記号をフォームに記し、記入しなければならないことを示しましょう。

フォームに設ける項目が少なければ少ないほどユーザーの負担が減り、送信前のページ離脱率は低くなります。しかし、あまりにも項目が少なすぎると、得られる情報量が限られます。必須項目を増やしたい場合は、上記の3つに加えて1~2個に抑えましょう。

任意の入力フォーム

任意の入力項目で代表的なのは、名前のふりがな・住所・性別・電話番号などです。お問い合わせとその返答を行うには、前項で挙げた3項目があれば事足りるため、これらの情報が必須項目として指定されることはほぼありません。

例外として、資料の送付を伴う場合や、音声での本人確認が必要なときは、住所や電話番号の入力を必須にすることがあります。

任意の入力項目は、提供しているサービスや事業内容による部分が大きいため、各自でアレンジしてもよいでしょう。

入力フォームにおける項目

お問い合わせフォームはさまざまな要素から成り立っています。入力フォームでよくみられる基本的な機能が、ラジオボタンとチェックボックスです。どちらも、ある質問に対する回答を、複数の選択肢から選んで回答するために用いられます。これらはほぼ同じものとして扱われることがありますが、決定的な違いがあります。

それは、前者は一つの選択肢しか選べないのに対し、後者は複数選ぶことができる点です。ただし、一つしか選べないから劣っているというわけではなく、性別の選択などラジオボタンにしか果たせない役割もあります。両方とも便利な機能のため、必要に応じて使い分けることが大切です。

そのほかには、プルダウンもよく使われます。年齢や都道府県の選択など、項目が多いときに役立つ機能です。比較的簡単に作成できるため、積極的に導入し、フォームの利便性を高めましょう。

確認画面

ユーザーがフォームに入力した内容を、送信前に確認する画面です。確認画面には、内容を送信するためのボタンが必須ですが、入力フォームに戻るボタンの設置も欠かせません。内容に誤りがあった場合でも修正ができるように、情報を保持したまま、入力画面に戻れるように導線を確保する必要があります。

場合によっては、使用しているブラウザの「戻る」ボタンを押して、前のページに戻ろうとするユーザーがいるかもしれません。ユーザーがお問い合わせに用いるOSやブラウザ、それらのバージョンは多様なため、すべての環境に対応するには限界があります。それでも、なるべく多くのユーザーが使いやすいフォームを作るために、最善を尽くしましょう。

完了画面

送信ボタンが押された場合は完了画面に遷移します。「お問い合わせいただきありがとうございます」などの文言を表示させるのが一般的です。

また「TOPに戻る」ボタンを設置して、企業ホームページに再び誘導したり、企業SNSへのリンクを添付したりするのもよいでしょう。工夫次第ではさまざまな相乗効果を望めますが、情報を詰め込みすぎるとユーザービリティの低下につながるため、注意が必要です。

お問い合わせフォーム作成のPHPコード例

ここではPHPを用いて、お問い合わせフォームを作る際、実際に記述するコードの例を紹介します。

入力ページ用PHPファイル(contact.phpとします)へのコーディング例

フォームの骨格を作る段階で記述するコードの例です。

<html>
  <head>
    <title>お問い合わせフォーム</title>
  </head>
  <body>
    <h1>お問い合わせフォーム</h1>
    <form method="post" action="confirm.php">
      <label for="name">名前:</label><br>
      <input type="text" id="name" name="name"><br>
      <label for="email">メールアドレス:</label><br>
      <input type="email" id="email" name="email"><br>
      <label for="message">お問い合わせ内容:</label><br>
      <textarea id="message" name="message"></textarea><br><br>
      <input type="submit" value="送信">
    </form>
  </body>
</html>

確認ページ用PHPファイル(cofirm.phpとします)へのコーディング例

contact.phpから渡された値を確認画面に表示させるためのコードの例です。

<?php 
 if ($_SERVER["REQUEST_METHOD"] == "POST") { 
  $name = $_POST["name"];
  $email = $_POST["email"];
  $message = $_POST["message"]; 
 } else { 
  header("Location: contact.php"); 
 } 
?>
<html>
 <head>
  <title>お問い合わせフォーム - 確認画面</title>
 </head>
 <body>
  <h1>お問い合わせフォーム - 確認画面</h1>
  <p>以下の内容で送信します。よろしいですか?</p>
  <table>
   <tr><td>名前:</td><td><?php echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); ?></td></tr>
   <tr><td>メールアドレス:</td><td><?php echo htmlspecialchars($email, ENT_QUOTES, 'UTF-8'); ?></td></tr>
   <tr><td>お問い合わせ内容:</td><td><?php echo htmlspecialchars($message, ENT_QUOTES, 'UTF-8'); ?></td></tr>
  </table>
  <form method="post" action="send.php">
   <input type="hidden" name="name" value="<?php echo $name; ?>">
   <input type="hidden" name="email" value="<?php echo $email; ?>">
   <input type="hidden" name="message" value="<?php echo $message; ?>">
   <input type="submit" value="送信">
   <button type="button" onclick="history.back()">戻る</button>
  </form>
 </body>
</html>

このフォームを送信すると、send.phpというファイルにデータが送信されます。

完了ページ用PHPファイル(send.phpとします)へのコーディング例

完了メッセージの表示エリアを作るために記述するコードです。

<?php
 if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = $_POST["name"];
  $email = $_POST["email"];
  $message = $_POST["message"];
  $to = "your_email@example.com";
  $subject = "お問い合わせがありました";
  $headers = "From:your_email@example.com";
  $body = "名前: $name\nメールアドレス: $email\n\n$message";
  if (mail($to, $subject, $body, $headers)) {
    $message = "お問い合わせが送信されました。ありがとうございます!";
  } else {
     $message = "エラーが発生しました。もう一度お試しください。";
    }
  } else {
      header("Location: contact.php");
  }
?>
<html>
  <head>
    <title>お問い合わせフォーム - 送信完了画面</title>
  </head>
  <body>
    <h1>お問い合わせフォーム - 送信完了画面</h1>
    <p><?php echo $message; ?></p>
    <p><a href="contact.php">お問い合わせフォームに戻る</a></p>
  </body>
</html>

上記のコードでは、フォームから送信されたデータを受け取り、お問い合わせ発生の通知メールを送信します。
そして、通知メールの送信結果に応じて、以下のメッセージを表示させます。

メールの送信が成功した場合:「お問い合わせが送信されました。ありがとうございます!」
メールの送信に失敗した場合:「エラーが発生しました。もう一度お試しください。」

また、送信完了画面には、お問い合わせフォームに戻るリンクが含まれています。

上記のコードでは、メールの送信には、PHPの標準関数であるmail()関数を使用しています。ただし、mail()関数は、環境によっては文字化けする等、正常に動作しない場合があります。

その場合は、代替のメール送信ライブラリを使用することをお勧めします。また、mail()関数を使用する場合は、セキュリティ上の理由から、ヘッダーのFromフィールドに、フォームから送信されたメールアドレスをそのまま使用しないように注意してください。

このコードはあくまで例となり最低限のものとなりますので、デザインや処理の様々な調整が必要となります。また、セキュリティ上の様々な懸念事項も考慮した実装が必要となります。

フォーム作成ツールで簡単に作れる!

さらに機能を充実させたり、デザインにこだわったりする場合は、CSSやJavaScriptの知識も必要になります。複数言語でコーディングを行える人材がいない企業にとって、利便性・デザイン・安全性すべてを兼ね備えたフォームを作ることは至難の業でしょう。

ここでは、専門知識がなくても簡単にフォームを作成できるツールをご紹介します。

クライゼル

「商用利用で、どのフォーム作成ツールを選んだらよいかわからない」とお悩みの方は、「クライゼル」の利用をおすすめします。クライゼルは、トライコーン株式会社が提供する、多機能で高セキュリティなCRMプラットフォームです。

kreiselフォーム作成機能では、安全なフォームをボタンの操作のみで作成できます。

PHPの難しい知識は必要ありません。完了メール送信やアクセス解析といった基本的な機能を備えていることはもちろん、カスタマイズ性が高い点も魅力です。

フォームは独自ドメインで公開できますし、HTMLやCSS、JavaScriptによる編集も自由自在です。

ISO/IECによるセキュリティ認証を受けているほか、プライバシーマークも取得しており、安全性の高さが広く認められています。reCAPTCHA v3に対応しているため、近年被害が多発しているスパムへの対策も万全です。

Googleフォーム

Google社が提供するフォーム作成ツールです。フォームのテンプレートが豊富に用意されていて、初心者でも直感的に分かりやすいツールです。

Googleアカウントをお持ちであれば、誰でも無料で利用できるため、個人利用の場合に適しているでしょう。

テーマのカスタマイズ

Googleフォームを利用してフォームを作成する手順をまとめていますので、下記記事を合わせてご覧ください。

まとめ

この記事では、PHPでお問い合わせフォームを作成する方法について解説しました。PHPとHTMLを組み合わせれば、お問い合わせフォームを作れます。しかし専門知識が必要なため、ハードルは高いといえるでしょう。

PHPやHTMLのコーディングが苦手な方、特に初心者の方には、フォーム作成ツールの利用がおすすめです。クライゼルは、誰でも簡単にフォームを作ることができる、お問い合わせフォーム作成に最適なツールです。

基本的なフォーム作成機能のみならず、セキュリティ対策に関するサービスが手厚いことは、どの企業にとっても嬉しいメリットです。カスタマーサポートも充実しており、困ったときは電話やメール、Zoomで気軽に相談を行うことができます。お問い合わせフォームの作成にお困りの方は、ご利用を検討してみてはいかがでしょうか。

弊社の多彩な業務で使える高セキュリティなCRMプラットフォーム「クライゼル」のカタログは下記からダウンロードいただけます。機能・料金表の記載もありますので、ぜひご覧ください。
クライゼルカタログ資料ダウンロードリンク
トライコーンラボ編集部

トライコーン株式会社 データ・マーケティング部
BtoBマーケティングにおける自社ノウハウや、お客様のDXを促進する情報を発信します。

トライコーンラボ編集部をフォローする
トライコーンラボ
タイトルとURLをコピーしました