メールフォーム(データベースに接続してないバージョン)
今回のメールフォームは非常にシンプルでデータベースには接続せず、フォームを記入してくれた人とフォームの管理者(自分)に、フォームに記入された内容がメールで届くようになっています。
mb_send_mail 関数
メールを実際に送るには mb_send_mail 関数を使用します。mb_send_mail 関数を使用する場合、文字コードに注意が必要です。PHPのお問い合わせフォームを制作して、文字化けしてしまったメールを送信してしまう、といったケースが良くあるので注意が必要です。
// メール本文の文字コード設定 mb_language("Japanese"); mb_internal_encoding("UTF-8"); //差出人の設定 "From:".mb_encode_mimeheader("管理者もしくは店舗名");
必要なファイルは
index.php(フォーム入力画面)
comfirm.php(フォーム内容確認画面)
submit.php(完了画面)
の3つです。
input.phpは以前制作したものでOK
comfirm.phpではポイントは2つ
入力項目に不備がある場合「onClick=”history.back()」を使ってinput.phpに戻るよう設定
comfirm.phpから入れないようにリダイレクトの設定
入力画面の作成
<!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>データベースに接続しないフォーム|入力画面</title> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>入力画面</h1> <form method="post" action="comfirm.php"> <dl> <dt>お名前<span>必須</span></dt> <dd><input type="text" name="name" required placeholder="山田 太郎"></dd> <dt>メールアドレス<span>必須</span></dt> <dd><input type="email" name="email" required></dd> <dt class="message">お問い合わせ内容<span>必須</span></dt> <dd class="message"><textarea name="message" required rows="5" cols="34"></textarea></dd> </dl> <input type="submit" value="確認"> <input type="reset" value="リセット"> </form> </body> </html>
確認画面の作成
<?php if(!(isset($_POST['name']))){ header('Location:index.php'); exit; } $name = htmlspecialchars($_POST['name'], ENT_QUOTES); $email = htmlspecialchars($_POST['email'], ENT_QUOTES); $message = htmlspecialchars($_POST['message'], ENT_QUOTES); //sessionスタート session_start(); //3つ変数をsession変数にさらに代入 $_SESSION['name'] = $name; $_SESSION['email'] = $email; $_SESSION['message'] = $message; ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>データベースに接続しないフォーム|確認画面</title> <meta name="viewport" content="width=device-width"> <link rel="stylesheet" href="css/style.css"> </head> <body> <h1>確認画面</h1> <p class="txt">ご入力頂いた内容は以下の通りでお間違い無いでしょうか?</p> <form method="post" action="submit.php"> <dl> <dt>お名前<span>必須</span></dt> <dd><?php echo $name; ?></dd> <dt>メールアドレス<span>必須</span></dt> <dd><?php echo $email; ?></dd> <dt class="message">お問い合わせ内容<span>必須</span></dt> <dd class="message"><?php echo $message; ?></dd> </dl> <input type="submit" value="送信"> <input type="button" value="入力画面に戻る" onclick="history.back();"> </form> </body> </html>
完了画面の作成
submit.phpでのポイントはヒアドキュメントを使う事。ヒアドキュメントを使うと、改行など自由に使ってテキストを出力させる事が出来る。
今回はこのヒアドキュメントをお礼メールの内容の部分に使ったので、お礼メールの文章などを好きに、簡単に、自分なりにアレンジ出来る。
また、今回はcomfirm.phpからsubmit.phpへはsessionでデータを送る。
mb_language(“Japanese”);
mb_internal_encoding(“UTF-8“);
“From:”.mb_encode_mimeheader(“管理者もしくは店舗名”);
submit.php
<?php //sessionスタート session_start(); $name = $_SESSION['name']; $email = $_SESSION['email']; $message = $_SESSION['message']; ?> <!DOCTYPE HTML> <html lang="ja"> <head> <meta charset="utf-8"> <title>データベースに接続しないフォーム|送信画面</title> </head> <body> <h1>お問い合わせありがとうございました。</h1> <p class="txt">後日、担当の者よりご連絡致します。</p> <?php //メール本文の文字コード設定 mb_language("Japanese"); mb_internal_encoding("UTF-8"); //postで送られたメールアドレスを宛先に代入 $to = "{$email}"; $title = "【お問い合わせありがとうございました。】"; //自動返信メールの差出人設定 $headers = "From:".mb_encode_mimeheader("株式会社フェリカ"); $headers.="\n"; $headers.="Bcc: yachin29@gmail.com";//管理者のメールにBCCで送信 $body = <<<EOM --------------------- 【お問い合せ内容の確認】 お名前:{$name} メールアドレス:{$email} メッセージ:{$message} {$name}様、お問い合わせ、誠にありがとうございました。 以上の内容でお問い合わせを承りました。 後ほど、担当の者よりご連絡いたしますのでお待ち下さい。 --------------------- EOM; //メール送信の実行 if(mb_send_mail($to, $title, $body, $headers)){ echo '処理が完了しました'; }else{ echo '処理が完了しませんでした。'; } //sessionデータの破棄 session_destroy(); ?> </body> </html>
コメント