webサイト制作の勉強|2019年10月クラス用ブログ

ファリカテクニカルアカデミーのwebサイト制作科の授業解説ブログです。フェリカテクニカルアカデミーは池袋にある求職者支援訓練の学校です。

メールフォーム(データベースに接続してないバージョン)

メールフォーム(データベースに接続してないバージョン)

今回のメールフォームは非常にシンプルでデータベースには接続せず、フォームを記入してくれた人とフォームの管理者(自分)に、フォームに記入された内容がメールで届くようになっています。


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>