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