初心者でも安心なPHPを使ったメールフォームの作り方を紹介

メールフォーム

プログラミング言語のなかでも、比較的簡単で覚えやすい言語として挙げられるのが「PHP」です。メールフォームの作成に際しては、このPHPとHTMLという2種類の言語を使用すればシンプルなフォームを作成できます。しかし、そのような側面を持ちつつも、ある程度の専門知識がなければ扱うことすら難しい、という事実もあるのです。
今回紹介するメールフォームの作り方とPHPとの関係性について把握しておけば、PHPを用いてメールフォームを作成するための基本的な知識を身に付けられるでしょう。また、専門的な知識やスキルがなくてもメールフォームを作成できる「フォーム作成ツール」についても併せて紹介します。

フォーム作成ツールとしては、多機能かつセキュリティ対策も万全な「クライゼルのフォーム作成ツール」のご利用がおすすめです。

PHPを使ったフォーム作成の仕組み

まずは、メールフォーム作成の仕組みについて、PHPとHTML双方の観点から見ていきましょう。併せて、メールフォームが持つ役割についても解説します。

動的なフォーム作成にPHPは必須

メールフォームとは、簡潔に述べると「フォームに入力されたユーザー情報をサーバー経由でWebサイトの管理人に送信する」役割を担っているWEBアプリケーション技術です。大まかに、「入力フォーム」「確認画面」「完了画面」の3つで構成されます。

入力フォームは、ユーザーが情報を入力するページで、設置するフォームの目的に応じて入力項目が変わりますが、ユーザーの負担が大きくならない程度の項目に抑えておくと効果的です。
確認画面は、ユーザーが入力した情報を確認し、間違いがないか、修正したい項目がないかなどを情報送信前に確認できるページで、ユーザーの安心感につながるページといえます。必ずしも設置しなくて良いものですが、ユーザビリティを考慮するのであればほぼ必須ともいえるページです。
完了画面については、情報送信が完了した旨とともに、フォームの設置目的に応じた情報が表示されるページとなります。設置目的が「お問い合わせ」であれば「お問い合わせいただいたことへの感謝」であったり、「購入申込み」であれば「受付番号」であったりと、その内容は多岐にわたるでしょう。

このように、メールフォームはユーザーが入力した内容に応じて表示される結果が変化するWebページです。別名「動的なWebページ」と呼びますが、PHPはページの内容が変化するよう処理を行う役割を担っています。つまり、メールフォームの作成に際してPHPは必須要素といえるのです。

※PHP以外のプログラミング言語を利用して作成することも可能です。

フォーム作成におけるPHPとは

続いて、メールフォームの作成におけるPHPの役割や特徴について補足して解説します。

PHPは動的なWebページの作成に必要となるプログラミング言語ですが、それ以外にもいくつか役割があります。

例えば、「静的なWebページ」を形成するHTMLに組み込むことで「動的なWebページ」に変化させられます。また、PHPはユーザー側のブラウザ上ではなく、サーバー側で処理される点も特徴の一つです。

フォーム作成におけるHTMLとは

PHPと並んでメールフォームの作成に欠かせないHTMLは、メールフォーム本体を構成している要素です。ユーザーの入力などによる何らかの働きかけによってページの内容が変化するわけではなく、Webページの「見た目づくり」に使用される静的なプログラミング言語となります。

例えば、「<h2>」というタグで文字を囲むことにより「見出し」になったり、「<p>」というタグで文字を囲むことで「段落」が発生したりするのです。

PHPによるフォーム作成で必要な関数

次に、PHPを用いたメールフォームの作成に際して必要となる関数について少し触れていきます。

例えば、ユーザーがメールフォームでの入力を完了した際に、その通知をユーザーや運営者に対してメール送信するには「mail関数」や「mb_send_mail関数」などが利用されます。

mail関数

mail関数は、メールを送信するために必要となる関数です。「宛先」「件名」「メッセージ」「ヘッダ」の4項目で構成されます。実際に、サンプルコードを見てみましょう。

<?php
  $to=”to@example.com”;
  $subject=”TEST”;
  $message=”This is a Test.”;
  $headers=”From:from@example.com”;

  mail($to, $subject, $message, $headers);
?>

実際に送信されるメールのイメージは以下の通りとなります。

差出人:from@example.com
宛先:to@example.com
件名:TEST
This is a test.

それぞれ、「差出人=headers」「宛先=to」「件名=subject」「メッセージ=message」となります。

mb_send_mail関数

mb_send_mail関数も、mail関数と同様にメールを送信するために必要となる関数となります。書くコードもほとんど変わりませんが、mail関数の欠点である「日本語の文字化け」解消に役立つ関数です。日本語は「マルチバイト文字(全角文字)」となるため、必要な措置を行わないと文字化けしてしまう恐れがありますが、mb_send_mail関数を使うと日本語での送信が可能となります。実際にコードを見てみましょう。

<?php
 $to = "to@example.com"; 
 $subject = "TEST"; 
 $message = "This is a Test."; 

 $fromEmail = "from@example.com"; 
 $fromName = "from name"; 

 $headers = "From: " . mb_encode_mimeheader($fromName) . " <" . $fromEmail . ">\r\n"; 
 $headers .= "MIME-Version: 1.0\r\n"; 
 $headers .= "Content-Type: text/plain; charset=UTF-8\r\n"; 

 mb_send_mail($to, $subject, $message, $headers) 
?>

日本語利用が主となることが想定される場合は、mb_send_mail関数の利用がおすすめです。

PHPを使ったフォーム作成の流れ

続いて、PHPを使ったメールフォーム作成の流れを見ていきましょう。大きく分けて、「HTMLによるメールフォームの見た目を作成」「PHPによる確認画面の作成」「PHPによる完了画面の作成」となります。

①PHPで入力画面を作成

まずは、メールフォームの入力画面を作成します。最低限、「名前」「メールアドレス」「お問い合わせ内容」を入力する項目と、送信ボタンは準備しておきます。

<?php 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
  // フォームからのデータを取得
  $name = $_POST["name"]; 
  $email = $_POST["email"]; 
  $message = $_POST["message"];

  // 入力値のバリデーション 
  if (empty($name) || empty($email) || empty($message)) { 
    $error_message = "全ての項目を入力してください。"; 
  } else { 
  // メールの送信 
  $to = "your-email@example.com"; 
  // 送信先のメールアドレスを指定 
  $subject = "お問い合わせがありました"; 
  $message_body = "名前: " . $name . "\n"; 
  $message_body .= "メールアドレス: " . $email . "\n"; 
  $message_body .= "お問い合わせ内容:\n" . $message; 
  $headers = "From: " . $email; 
  
  if (mail($to, $subject, $message_body, $headers)) { 
  $success_message = "お問い合わせを受け付けました。ありがとうございます!"; 
  } else { 
  $error_message = "メールの送信に失敗しました。後でもう一度お試しください。"; 
  } 
 } 
} 
?>
<!DOCTYPE html>
<html>
<head>
  <title>お問い合わせフォーム - 確認</title>
</head>
<body>
  <h1>お問い合わせフォーム</h1> 
  <?php if (isset($error_message)): ?> 
    <p style="color: red;"><?php echo $error_message; ?></p> 
  <?php endif; ?> 
  <?php if (isset($success_message)): ?> 
    <p style="color: green;"><?php echo $success_message; ?></p> 
  <?php endif; ?> 
  <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
    <label for="name">名前:</label> 
    <input type="text" id="name" name="name" required><br> 
    <label for="email">メールアドレス:</label> 
    <input type="email" id="email" name="email" required><br> 
    <label for="message">お問い合わせ内容:</label><br> 
    <textarea id="message" name="message" rows="5" required></textarea><br> 
    <input type="submit" value="送信"> 
  </form>
</body>
</html>

詳細なサンプルコードなどについては、以下の記事をご参照ください。

②PHPで確認画面を作成

続いて、PHPを用いてユーザーが入力内容(今回は「名前」「メールアドレス」「「お問い合わせ内容」)を確認できる確認画面を作成します。この際、必要となるコードのサンプルは以下の通りです。

<?php 
session_start(); 

// セッションからデータを取得
$name = $_SESSION["name"]; 
$email = $_SESSION["email"]; 
$message = $_SESSION["message"]; 

// フォームのデータが送信された場合の処理 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
  // ここでデータを処理またはデータベースに保存するなどの操作を行います。 
  // お問い合わせが完了したらセッションをクリア 
  session_unset(); session_destroy(); 
  // 完了画面にリダイレクト 
  header("Location: complete.php"); 
  exit(); 
} 
?>
<!DOCTYPE html>
<html>
  <head>
    <title>お問い合わせフォーム - 確認</title>
  </head>
  <body>
    <h1>お問い合わせフォーム - 確認</h1>
    <h2>入力内容をご確認ください</h2>
    <p><strong>名前:</strong> <?php echo $name; ?></p>
    <p><strong>メールアドレス:</strong> <?php echo $email; ?></p>
    <p><strong>お問い合わせ内容:</strong> <?php echo $message; ?></p>
    <form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
      <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="送信">
    </form>
  </body>
</html>

上記のコードで確認画面を作成すると、以下のようなWebページが生成されます。

お問い合わせフォーム – 確認

名前 ○○
メールアドレス ○○
問い合わせ内容 ○○

【送信ボタン】

送信ボタンを押下して実際にメールが送信されるようにするためには、別途コードを書く必要がある点を併せて把握しておきましょう。

③HTMLで完了画面を作成

最後に、PHPを使い完了画面を作成します。サンプルコードは以下の通りです。

<!DOCTYPE html>
<html>
  <head>
    <title>お問い合わせフォーム</title>
  </head>
  <body>
    <h1>お問い合わせフォーム</h1>
    <h2>お問い合わせが完了しました!</h2>
    <p>お問い合わせ内容:</p>
    <p><strong>名前:</strong> <?php echo $name; ?></p>
    <p><strong>メールアドレス:</strong> <?php echo $email; ?></p>
    <p><strong>お問い合わせ内容:</strong> <?php echo $message; ?></p>
  </body>
</html>

例えばこのようなコードを書くことで、メールフォームの入力者側に向けて表示される完了画面が生成されます。

フォーム作成ツールで初心者も簡単に作れる

ここまで、メールフォームの作成に必要な要素や実際のコード例などを紹介してきましたが、慣れるまではこうしたコードを書くのに苦労することでしょう。そのような方にとって、「フォーム作成ツール」は非常に便利です。最後に、フォーム作成ツールのメリットと、おすすめのツールである「クライゼル」について紹介します。

フォーム作成ツールとは?メリットは?

コードを書く専門知識がなくても簡単に作成ができるツールです。今回紹介したような長いコードを自社内で作成する必要がないため、プログラミングのスキルを有した人材や、関連するノウハウが育っていなくても安心して作成できます。

無料で利用できるものから、有料で利用できるものまで多くのツールがありますが、カスタマイズ性やセキュリティ対策を考慮するのであれば有料のフォーム作成ツールを利用すると良いでしょう。

おすすめのフォーム作成ツールはクライゼル

トライコーン株式会社が提供しているフォーム作成ツール「クライゼル」は、シンプルな管理画面や充実したセキュリティ機能などを有した高機能のツールです。利用される方向けに、カスタマーサポートをはじめとした各種サポート体制も整っているため、初めてフォーム作成ツールを利用されるという方でも安心してご利用いただけます。

「クライゼル」は初期費用100,000円~、月額50,000円~となっており、「クライゼルライト」の初期費用は0円、月額固定で10,000円となっています。

まとめ

PHPとHTMLを利用することでメールフォームを作成できます。しかし、プログラミングの知識やスキルが乏しい場合、自社内で作成することは困難でしょう。そのような場合は、無理をせずフォーム作成ツールを利用するのがおすすめです。

特に、「クライゼル」は機能性だけでなく、セキュリティ対策やサポート体制も整った高機能なツールとなっております。
サービス提供開始以来10年以上、無事故のセキュリティを誇るフォーム作成ツール、クライゼルをこの機会にぜひご検討ください。

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

トライコーン(株)Senior Vice President of Marketing。
Web広告、CRM、CDP、データ可視化などお客様のwebマーケティングの課題解決に長年従事。
Salesforce Marketing cloud メールスペシャリスト / アドミニストレータ / コンサルタントおよび、Salesforce アドミニストレータの各認定資格を保持。

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