未経験のwebサイト制作の勉強

未経験からwebサイト制作の勉強をし、現在制作会社で働いております。

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

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

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

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>