PHPstep

トップページ > PHPでメール送信フォームを作ろう >

第二章 PHPでウェブアプリケーションを作ろう

PHPでメール送信フォームを作ろう ソース全文

「PHPでメール送信フォームを作ろう」のソース全文です。 お問合せ内容の入力ページ(index.php)、 入力内容の確認ページ(confirm.php)、 メール送信完了ページ(mailpost.php)。
※最終完成形はこちら→メール送信フォームサンプル

お問合せ内容の入力ページ(index.php)

サンプルソース:index.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>お問合せ内容の入力|メール送信フォーム</title> </head> <body> <?php /******************************* 確認ページから戻ってきた場合のデータの受け取り *******************************/ if (isset($_POST["backbtn"])) { //確認ページ(confirmphp)から戻ってきた場合にはデータを受け取る $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); } else { //確認ページから戻ってきた場合でなければ、変数の値は必ず空となる $namae = ''; //お名前 $mailaddress = ''; //メールアドレス $naiyou = ''; //お問合せ内容 } ?> <form method="post" action="confirm.php"> <p><label>お名前:<br> <input type="text" maxlength="255" name="namae" value="<?=$namae?>"> </label></p> <p><label>メールアドレス:<br> <input type="email" size="30" maxlength="255" name="mailaddress" value="<?=$mailaddress?>"> </label></p> <p><label>お問合せ内容:<br> <textarea name="naiyou" cols="40" rows="5"><?=$naiyou?></textarea> </label></p> <p><input type="submit" value="入力内容を確認する"></p> </form> </body> </html>

入力内容の確認ページ(confirm.php)

サンプルソース:confirm.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>入力内容の確認|メール送信フォーム</title> </head> <body> <?php /******************************* データの受け取り *******************************/ $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); /******************************* 未入力チェック *******************************/ $errmsg = ''; //エラーメッセージを空にしておく if ($namae == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; } if ($mailaddress == '') { $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; } if ($naiyou == '') { $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; } /******************************* 入力内容の確認 *******************************/ if ($errmsg != '') { //エラーメッセージが空ではない場合には、エラーメッセージを表示する echo $errmsg; //[前のページへ戻る]ボタンを表示する echo '<form method="post" action="index.php">'; echo '<input type="hidden" name="namae" value="'.$namae.'">'; echo '<input type="hidden" name="mailaddress" value="'.$mailaddress.'">'; echo '<input type="hidden" name="naiyou" value="'.$naiyou.'">'; echo '<input type="submit" name="backbtn" value="前のページへ戻る">'; echo '</form>'; } else { //エラーメッセージが空の場合には、入力された内容を画面表示する echo '<h3>入力内容を確認します</h3>'; echo '<dl>'; echo '<dt>【お名前】</dt><dd>'.$namae.'</dd>'; echo '<dt>【メールアドレス】</dt><dd>'.$mailaddress.'</dd>'; echo '<dt>【お問合せ内容】</dt><dd>'.nl2br($naiyou).'</dd>'; echo '</dl>'; //[上記内容で送信する]ボタンを表示する echo '<form method="post" action="mailpost.php">'; echo '<input type="hidden" name="namae" value="'.$namae.'">'; echo '<input type="hidden" name="mailaddress" value="'.$mailaddress.'">'; echo '<input type="hidden" name="naiyou" value="'.$naiyou.'">'; echo '<input type="submit" name="okbtn" value="上記内容で送信する">'; echo '</form>'; } ?> </body> </html>

メール送信完了ページ(mailpost.php)

サンプルソース:mailpost.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>メール送信完了|メール送信フォーム</title> </head> <body> <?php /******************************* データの受け取り *******************************/ $namae = $_POST["namae"]; //お名前 $mailaddress = $_POST["mailaddress"]; //メールアドレス $naiyou = $_POST["naiyou"]; //お問合せ内容 //危険な文字列を入力された場合にそのまま利用しない対策 $namae = htmlspecialchars($namae, ENT_QUOTES); $mailaddress = htmlspecialchars($mailaddress, ENT_QUOTES); $naiyou = htmlspecialchars($naiyou, ENT_QUOTES); /******************************* 未入力チェック *******************************/ $errmsg = ''; //エラーメッセージを空にしておく if ($namae == '') { $errmsg = $errmsg.'<p>お名前が入力されていません。</p>'; } if ($mailaddress == '') { $errmsg = $errmsg.'<p>メールアドレスが入力されていません。</p>'; } if ($naiyou == '') { $errmsg = $errmsg.'<p>お問合せ内容が入力されていません。</p>'; } /******************************* メール送信の実行 *******************************/ if ($errmsg != '') { //エラーメッセージが空ではない場合には、[前のページへ戻る]ボタンを表示する echo $errmsg; //[前のページへ戻る]ボタンを表示する echo '<form method="post" action="index.php">'; echo '<input type="hidden" name="namae" value="'.$namae.'">'; echo '<input type="hidden" name="mailaddress" value="'.$mailaddress.'">'; echo '<input type="hidden" name="naiyou" value="'.$naiyou.'">'; echo '<input type="submit" name="backbtn" value="前のページへ戻る">'; echo '</form>'; } else { //エラーメッセージが空の場合には、メール送信処理を実行する //メール本文の作成 $honbun = ""; $honbun .= "メールフォームよりお問い合わせがありました。\n\n"; $honbun .= "【お名前】\n"; $honbun .= $namae."\n\n"; $honbun .= "【メールアドレス】\n"; $honbun .= $mailaddress."\n\n"; $honbun .= "【お問い合わせ内容】\n"; $honbun .= $naiyou."\n\n"; //エンコード処理 mb_language("Japanese"); mb_internal_encoding("UTF-8"); //メールの作成 $mail_to = "●●●●●●●"; //送信先メールアドレス $mail_subject = "メールフォームよりお問い合わせ"; //メールの件名 $mail_body = $honbun; //メールの本文 $mail_header = "from:".$mailaddress; //送信元として表示されるメールアドレス //メール送信処理 $mailsousin = mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header); //メール送信結果 if($mailsousin == true) { echo '<p>お問い合わせメールを送信しました。</p>'; } else { echo '<p>メール送信でエラーが発生しました。</p>'; } } ?> </body> </html>

  1. フォーム入力ページを作成する
  2. 送信されたデータを受け取る
  3. 変数に代入する
  4. 受け取ったデータを安全な文字列に変換する
  5. 未入力チェック機能をつくる
  6. 未入力チェック機能を洗練させる
  7. [前のページへ戻る]ボタンをつくる
  8. 入力内容確認ページを完成させる
  9. メール送信処理ページを作成する
  10. メール送信フォームを完成させる