5/29 [PHP] メールフォーム
- [PHP] メールフォーム(サーバーへアップロード)
[PHP] メールフォーム(サーバーへアップロード)
【作業手順】
1. サイト管理(XAMPP環境)
Dreamweaver-サイトの管理: アップロード用データを新規サイトに設定しておく
3.thanks.phpファイルに以下を追記
1. メールのエンコーディング設定
《thanks.php》
文字化け防止として、以下を追記
//メールのエンコーディング設定 mb_language('japanese'); mb_internal_encoding('UTF-8');
メモ:
2. thanks.php ファイルのbodyの内容を書き換える
方法 : ヒアドキュメントで書き換える
▼ヒアドキュメントについて
入力内容のまま出力することができる
参照:
ヒアドキュメント | PHP Labo:
http://www.php-labo.net/tutorial/php/heredocument.html
PHP ヒアドキュメントの使い方:2通り - すたら日記:
http://d.hatena.ne.jp/sutara_lumpur/20080803/1217724875
▼入力内容のまま出力する方法
(1) ヒアドキュメント …開始点・終了点で指定した範囲内の入力内容はそのまま出力される
(2) { 変数 }で囲む …配列、メンバー変数が展開され、出力される
[今回の書き換え内容]
以下のように書き換えます。
$body = <<< BODY
【お問い合わせメール】
以下内容で承りました。
お名前:
{$name}
メールアドレス:
{$email}
お電話番号:
{$tel}
メッセージ:
{$message}
BODY;
この結果、<<< BODYを開始点、BODYを終了点とし、その間の入力内容は入力された通りに出力されます。
3. $thanks_message に値を設定する
$thanks_message = '上記の内容でお問い合わせメールを承りました。'; if(!$r) { $thanks_message = 'メール送信エラー。以下お問い合わせは送信されませんでした。'; }
if(!$r) は、
書き換えると以下と同義
if($r === false)
メモ:
なぜ index.html ではなく、index.php なのか?
[理由] 拡張子がphpであることにより、後からphpを埋め込むことができるから
4.変数の初期化
//変数の初期化 $name = ''; $email = ''; $tel = ''; $message = '';
以上の修正完了後、ファイルの再アップロードを実施
[修正完了後のソース全文]
《thanks.php》
<?php require_once 'init.php'; //var_dump($_SESSION); //セッションから値を取得 $name = $_SESSION['mail_data']['name']; $email = $_SESSION['mail_data']['email'] ; $tel = $_SESSION['mail_data']['tel'] ; $message = $_SESSION['mail_data']['message']; //$data = $_SESSION['mail_data']; //var_dump($data); //セッションを取っておく必要がないのでクリア $_SESSION['mail_data'] = array(); unset($_SESSION['mail_data']); $to = "送信先とする任意のメールアドレス"; $subject = 'お問い合わせ'; //$from = $email; //$body = $name . $email . $tel . $message; $body = <<< BODY 【お問い合わせメール】 以下内容で承りました。 お名前: {$name} メールアドレス: {$email} お電話番号: {$tel} メッセージ: {$message} BODY; //メールのエンコーディング設定 mb_language('japanese'); mb_internal_encoding('UTF-8'); $r = mb_send_mail($to, $subject, $body); //var_dump($r); //mb_send_mail("送信先","表題","本文","ヘッダオプション"); $thanks_message = '上記の内容でお問い合わせメールを承りました。'; if(!$r) { $thanks_message = 'メール送信エラー。以下お問い合わせは送信されませんでした。'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>送信終了</title> <link rel="stylesheet" href="css/style1.css"> </head> <body> <div id="container"> <h1>送信終了</h1> <p></p> <table> <tr> <th>お名前:</th> <td><?php echo h($name); ?></td> </tr> <tr> <th>email:</th> <td><?php echo h($email); ?></td> </tr> <tr> <th>お電話番号:</th> <td><?php echo h($tel); ?></td> </tr> <tr> <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); } ?> <a href="index.php">戻る</a></p> </div> </body> </html> <?php ob_end_flush();