webページのつくり方 | 学びの道

webページのつくり方、web制作、web作成、学びの道を歩み中!フェリカテクニカルアカデミー「東京・池袋」にてWeb作成を勉強中です。学んだ事をメモしていきます。

PHP メールフォーム【thanks.php】

PHP メールフォーム【thanks.php】について記載します。

※但し、あくまでも練習です。

 

 下記5枚のファイルで構成されます。

  1. index.php
  2. thanks.php
  3. check.php
  4. init.php
  5. style.css

 

本日は、thanks.php について記載します。

 

<?php

//require_once:最初に一度だけinit.phpファイルを読みに行ってねの意味
require_once dirname(__FILE__).'/init.php';

if(!$_SESSION['mail_data']['error']){
  header('Location:index.php');
  exit;
}

//thanks.phpページに情報を持ってくるには、セッションで持ってくるしか方法が無い。つまり、セッションにしかデータは入っていない。

//セッションから値を取得
$name = $_SESSION['mail_data']['name'];
$email = $_SESSION['mail_data']['email'];
$tel = $_SESSION['mail_data']['tel'];
$message = $_SESSION['mail_data']['message'];

//セッションを取っておく必要がないのでクリア

//arrayは代入する関数。()で空を代入し、メール返信後入力されたデータ内容を削除。
//配列の初期化をして、中身を消している。
//二次元配列がここで生きてくる。['mail_data'] ['name'];では無く['name'];だけだった場合、$_SESSION;['name'] =array()で中身を空にすると、当たり前だがログインし続ける為に必要な情報が消えるため、ログイン状態が続けられなくなる。ログインしてください・・・が繰り返される可能性。
//一次元配列の場合のアンセット○○、アンセット○○、と一つずつ消せば出来るが手間が掛かる。
$_SESSION['mail_data'] =array();
unset($_SESSION['mail_data']);

//時間を-42000秒前に設定すると事で、IDを残さない
if( isset( $_COOKIE[ session_name() ] )) {
  setcookie( session_name(), '', time()-42000, '/');
}
session_destroy();  //セッションを破棄する

//クライアントへのメール送信内容の設定
$to ="sample@sample.com";
$subject = "お問い合わせメール";
$from =$email;


//{ }は、中身を展開するの意味
$body =<<<BODY
【お問い合わせメール】
以下内容で承りました。
お名前:
{$name}
メールアドレス:
{$email}
お電話番号:
{$tel}
メッセージ:
{$message}
BODY;

//メールのエンコーディング設定

//メールの内容は日本語ですの意。

//mb_language('japanese'); mb_internal_encoding('UTF-8'); は無くても文字化けしない場合も有るが書いたほうが良い。
mb_language('Japanese');
mb_internal_encoding('UTF-8');

 

//サーバーに送るのが成功したらtrue(送信者にメールが送られた訳ではないので中注意!!)
//mb_send_mail(”送信先”,”表題”,”本文”,”ヘッダオプション”);
$r = mb_send_mail($to,$subject,$body);
$thanks_message ='上記の内容でお問い合わせメールを承りました。';

 

//ここで判定している。

//違う書き方→if($r===false){
// ! は、意味を反転させる。効果がある。
if(!$r){
 $thanks_message ='メール送信エラー。以下お問い合わせは送信されませんでした。';
}

?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>送信終了</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="container">
<h1>送信終了</h1>
<table>
<tr class="small">
<th>お名前:</th>
<td><?php echo h($name); ?></td>
</tr>
<tr class="small">
<th>email:</th>
<td><?php echo h($email); ?></td>
</tr>
<tr class="small">
<th>お電話番号:</th>
<td><?php echo h($tel) ?></td>
</tr>
<tr class="small">
<th>お問い合わせ内容:</th>
<td><?php echo nl2br(h($message)); ?></td>
</tr>
</table>
<p>
<?php
if(!$r){
  echo '<span>'.h($thanks_message).'</span>';
} else {
  echo h($thanks_message);
}
?>
</p>
<p><a href="index.php">戻る</a></p>
</div>
</body>
</html>
<?php ob_end_flush();