PCゲーマーのWebデザイン備忘録

PCゲーマーのWebデザイン備忘録。東京都内でWEBデザイナーとして働いています。Webデザインやゲームに関することをブログに書いていきます

【PHP】 メールフォームの作り方②

引き続きメールフォームを作っていきます。今回はフォームで受け取ったデータを再び別ページへ送り、メールを送信します。

【PHP】 メールフォームの作り方① - PCゲーマーのWebデザイン備忘録


フォームで受け取ったデータを再び別なページへ送る。

session を使うことで、フォームで受け取ったデータを別なページへ引き継ぐことが出来ます。

セッションファイルはサーバーの中にあり、一時的にデータをサーバーに保存します。フォームで受け取られたデータは、使うたびに消えてしまうので、セッションファイルに保存をすることで引き継げます。


check.php にsessionを使って、データを引き継ぐために書き直します。

前回までの check.php

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
?>


session を使った check.php

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

session_start();
session_regenerate_id(true);
$_SESSION['name'] = $_POST['name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['message'] = $_POST['message'];
?>

session_regenerate_idは、セッションファイルに ID を付けてあげる方法で、複数の処理を同時に受けるためにも使います。1つの処理に1つのデータしか引き継げないため、同時に2人も3人も利用する可能性のあるメールフォームには必ず ID を振るようにします。

また、session_regenerate_id で生成されたIDはランダムなので、フォームに入力されたデータが他へ流出するのを防ぎます。


セッションファイルを受け取る

check.php で作ったセッションファイルを thunks.php で受け取るために、セッションファイルから情報を取り出します。

thanks.php

<?php
session_start();
session_regenerate_id(true);

$name = $_SESSION['name'];
$email = $_SESSION['email'];
$message = $_SESSION['message'];
?>


メールを送る

実際にフォームで受け取られたデータをメールで送るには mb_send_mail() を使います。mbはマルチバイトと言う意味なので、文字化けせずにメールを送ることが出来ます。

書き方:

//第一引数 送信先
//第二引数 題名
//第三引数 メール本文
mb_send_mail($to,$subject,$body);


メールを送信するphp

<?php
$to= 'sample@sample.com';//メールアドレス
$subject='お問い合わせメール';
$body=<<<BODY
【お問い合わせメール】
以下の内容で承りました。
お名前:
{$name}
Eメール:
{$email}
お問い合わせ内容:
{$message}
BODY;

mb_send_mail($to,$subject,$body);
?>

メールの内容はヒアドキュメントで内容を記述しています。
詳しくは PHPリファレンスをご参照ください。
PHP: 文字列 - Manual