【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