CONTACT
お問い合わせ内容をご記入の上
送信してください。
/** * メールフォームphp * http://qiita.com/mpyw/items/b4dc02ed8aa3ba7c5b5c */ /** * HTML特殊文字をエスケープする関数 */ function h($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } /** * RuntimeExceptionを生成する関数 * http://qiita.com/mpyw/items/6bd99ff62571c02feaa1 */ function e($msg, Exception &$previous = null) { return new RuntimeException($msg, 0, $previous); } /** * 例外スタックを配列に変換する関数 * http://qiita.com/mpyw/items/6bd99ff62571c02feaa1 */ function exception_to_array(Exception $e) { do { $msgs[] = $e->getMessage(); } while ($e = $e->getPrevious()); return array_reverse($msgs); } /* 変数の初期化 */ foreach (array('data_about','data_day_01','data_day_02','data_day_03','data_place','data_planner','data_name', 'data_mail','data_tel', 'data_comment', 'token', 'execute') as $v) { $$v = isset($_POST[$v]) && is_string($_POST[$v]) ? trim($_POST[$v]) : ''; } /* セッションの初期化 */ session_name('ContactForm'); @session_start(); if (!isset($_SESSION['token'])) { $_SESSION['token'] = array(); } /* 実行 */ if ($execute) { try { // トークンをチェック // if (!isset($_SESSION['token'][$token])) { // throw e('メールはすでに送信されています。', $e); // } // トークンを消費させる unset($_SESSION['token'][$token]); // 例外がここまでに1つでも発生していればスローする if (!empty($e)) { throw $e; } $mailContent = "【お問い合せ項目】\r\n" . $data_about . "\r\n\r\n【挙式日】\r\n" . $data_day_01 . "/" . $data_day_02. "/" . $data_day_03 . "\r\n\r\n【会場名】\r\n" . $data_place . "\r\n\r\n【ウエディングプランナー会社 / 担当プランナー】\r\n" . $data_planner . "\r\n\r\n【お名前】\r\n" . $data_name . "\r\n\r\n【電話番号】\r\n" . $data_tel . "\r\n\r\n【MAILアドレス】\r\n" . $data_mail ."\r\n\r\n【お問い合せ内容】\r\n" . $data_comment . "\r\n\r\n--\r\nこのメールは ounce (http://ounce.jp/contact/) のお問い合わせフォームから送信されました"; $mailReturn = "お問い合わせありがとうございます。\r\n返信までしばらくお待ち下さい。\r\n\r\nお問い合せ内容は下記になります。\r\n--------------------\r\n" . $mailContent; $message = wordwrap($mailContent, 70, "\r\n"); $messageRe = wordwrap($mailReturn, 70, "\r\n"); // 「送信」のとき // $address = 'info@ounce.jp'; $address = 'nakamura@wonderful.co.jp'; if ( $execute and !mb_internal_encoding('utf-8') || !mail( $address, mb_encode_mimeheader('CONTACTより問い合わせ', 'ISO-2022-JP-MS'), mb_convert_encoding($message, 'ISO-2022-JP-MS'), implode("\r\n", array( 'Content-Type: text/plain; charset=ISO-2022-JP', 'From: ' . mb_encode_mimeheader($data_name, 'ISO-2022-JP-MS') . ' <' . $data_mail . '>', )), '-f ' . $address ) || !mail( $data_mail, mb_encode_mimeheader('【ounce】お問い合わせありがとうございます。', 'ISO-2022-JP-MS'), mb_convert_encoding($messageRe, 'ISO-2022-JP-MS'), implode("\r\n", array( 'Content-Type: text/plain; charset=ISO-2022-JP', 'From: ' . mb_encode_mimeheader('ounce', 'ISO-2022-JP-MS') . ' <' . $address . '>', )), '-f ' . $address ) ) { throw e('メール送信でエラーが発生しました。', $e); }else{ header("HTTP/1.1 301 Moved Permanently"); header("Location:http://ounce.jp/contact/completion.html"); } } catch (Exception $e) { // 最初の画面に戻す $execute = ''; } } /* 「最初」か「確認」のときのみ実行 */ if (!$execute) { // 値をダミーにしてトークンをキー部分に生成(最大10個まで保持) $_SESSION['token'] = array_slice( array($token = sha1(mt_rand()) => true) + $_SESSION['token'], 0, 10 ); } // ヘッダー送信 //header('Content-Type: application/xhtml+xml; charset=utf-8'); ?>