template_dir = './templates/';
$smarty->compile_dir = './templates_c/';
$smarty->config_dir = './configs/';
$smarty->cache_dir = './cache/';
/* ========================================
フォーム画面設定
======================================== */
/* 入力(フォーム)画面 */
$confirm = false;
if(isset($_POST['confirm'])) { $confirm = $_POST['confirm']; } // 確認ボタン
/* 確認画面 */
$corrects = false;
$commit = false;
if(isset($_POST['corrects'])) { $corrects = $_POST['corrects']; } // 修正ボタン
if(isset($_POST['commit'])) { $commit = $_POST['commit']; } // 送信ボタン
/* ----------------------------------------
★フォーム送信値・変換
==========================================
【処理内容】
フォームで取得した値(例:$_POST['aaa'])を、
入力チェックなどの処理の為、一度変数(例:$aaa)に代入します
------------------------------------------
【留意点】
・名称は混乱を避ける意味で出来る限り同名として
命名してください
・項目に複数の値が入る場合は配列で処理することとします
------------------------------------------
【追加例】
$_POST['aaa'] ⇒ 「aaa」にはタグで命名した
『name』属性の値を入れるようにしてください。
ex )
⇒ $_POST['text_test']、 $test_test
なお、name の命名は必ず、「inputのtype名_項目名」として下さい。
ex ) 氏名
------------------------------------------ */
if ( isset($_POST['text_name01']) ){ // 氏名・苗字
$text_name01 = $_POST['text_name01'];
} else {
$text_name01 = "";
}
if ( isset($_POST['text_name02']) ){ // 氏名・名前
$text_name02 = $_POST['text_name02'];
} else {
$text_name02 = "";
}
if( isset($_POST['text_furi_name01']) ){ // ふりがな・苗字
$text_furi_name01 = $_POST['text_furi_name01'];
} else {
$text_furi_name01 = "";
}
if( isset($_POST['text_furi_name02'])){ // ふりがな・名前
$text_furi_name02 = $_POST['text_furi_name02'];
} else {
$text_furi_name02 = "";
}
if ( isset($_POST['text_tel01']) ){ // 電話番号01
$text_tel01 = $_POST['text_tel01'];
} else {
$text_tel01 = "";
}
if ( isset($_POST['text_tel02']) ){ // 電話番号02
$text_tel02 = $_POST['text_tel02'];
} else {
$text_tel02 = "";
}
if ( isset($_POST['text_tel03']) ){ // 電話番号03
$text_tel03 = $_POST['text_tel03'];
} else {
$text_tel03 = "";
}
if( isset($_POST['mail_address'])) { // メールアドレス
$mail_address = $_POST['mail_address'];
} else {
$mail_address = "";
}
if( isset($_POST['radio_align']) ) { // 属性
$radio_align = $_POST['radio_align'];
} else {
$radio_align = "";
}
if( isset($_POST['chk_doui']) ) { // 同意チェック
$chk_doui = $_POST['chk_doui'];
} else {
$chk_doui = "";
}
if( isset($_POST['text_inquiry']) ) { // お問い合わせ内容
$text_inquiry = $_POST['text_inquiry'];
} else {
$text_inquiry = "";
}
if( isset($_POST['text_company_name']) ) { // 会社名部署名
$text_company_name = $_POST['text_company_name'];
} else {
$text_company_name = "";
}
/* ========================================
★フォーム画面 (inputページ)表示
==========================================
【処理内容】
・初期画面の場合と、入力エラーがある場合に
フォームページを表示します
・入力エラーがある場合は、フォームから取得した値(例:$aaa)を
フォーム(Smarty テンプレートに設定した変数)へ反映します
------------------------------------------
【留意点】
・名称は混乱を避ける意味で出来る限り同名として
命名してください
・項目に複数の値が入る場合は配列で処理することとします
------------------------------------------
【追加例】
$smarty->assign('aaa', $aaa);
'aaa':Smartyテンプレートで設定する変数名 (反映先)
$aaa:上記、処理用として設定した変数名 (反映する値)
※頭に「$」がつくと変数となる
======================================== */
if( (!$confirm && !$commit ) || $corrects ){ // 確認ボタンからの遷移で無い OR 修正からの遷移
// 初期画面 (確認ボタンが押されてない場合)
if( !isset($_SESSION["str_session_id"]) ) {
// 乱数生成
$_SESSION["str_session_id"] = hash_hmac('md4', date("YmdHis"), 'secret') . mt_rand(1000, 30000);
$_SESSION["flg_session"] = 1;
}
// セッションIDが発行されている場合
if ( $_SESSION["flg_session"] == 1 && isset($_SESSION["str_session_id"]) ) {
// Smarty に値をアサイン
$smarty->assign('text_name01', $text_name01);
$smarty->assign('text_name02', $text_name02);
$smarty->assign('text_furi_name01', $text_furi_name01);
$smarty->assign('text_furi_name02', $text_furi_name02);
$smarty->assign('text_tel01', $text_tel01);
$smarty->assign('text_tel02', $text_tel02);
$smarty->assign('text_tel03', $text_tel03);
$smarty->assign('radio_align', $radio_align);
$smarty->assign('chk_doui', $chk_doui);
$smarty->assign('text_inquiry', $text_inquiry);
$smarty->assign('text_company_name', $text_company_name);
$smarty->assign('mail_address', $mail_address);
// Smarty へエラーテキストをブランクでアサイン
$smarty->assign('err_text_inquiry', "");
$smarty->assign('err_text_name', "");
$smarty->assign('err_text_furi_name', "");
$smarty->assign('err_mail_address', "");
$smarty->assign('err_text_tel', "");
$smarty->assign('err_radio_align', "");
$smarty->assign('err_chk_doui', "");
// display it
$smarty->display('input.tpl');
} else {
// 完了画面に遷移後、セッションを初期化、破棄する
header('Location: thanks.html');
$flg_session = NULL;
$_SESSION = array();
session_unset();
@session_destroy();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()- 36000, '/');
echo "clear OK";
}
$flg_session = NULL;
echo "入力に不正があった為、入力フォームを初期化しました。
大変お手数ですが、再入力をお願いいたします。";
header('Location: index.html');
}
/* ========================================
★inputページに入力があった場合
==========================================
【処理内容】
・フォームで取得した値(例:$aaa)の入力チェックを行います
・チェックの結果を Smarty テンプレートに反映します
・エラーあり:値とエラー文を入力画面へ反映
・エラーなし:値を確認画面へ反映
------------------------------------------
【入力チェック関数】 ※ ../include/function.php より
・必須入力:IndisInputCheck( [型:string] )
・全角カタカナ:Katakana_Check( [型:string] )
・半角→全角変換:Kana_Check( [型:string] )
・メールアドレス:Mail_Check( [型:string] )
・郵便番号:PostNumber_Check( [型:string] )
・電話番号:PhoneNumber_Check( [型:string] )
------------------------------------------
【留意点】
・テンプレート変数('aaa')への命名は混乱を避ける意味で
出来る限り処理変数($aaa)と同名としてください
・項目に複数の値が入る場合は配列で処理することとします
------------------------------------------
【追加例】
$smarty->assign('aaa', $aaa);
'aaa':Smartyテンプレートで設定する変数名 (反映先)
$aaa:上記、処理用として設定した変数名 (反映する値)
※頭に「$」がつくと変数となる
======================================== */
} elseif( $confirm && !$commit && $_SESSION["str_session_id"]) {
/* -------------------------
必須入力チェック
------------------------- */
// 名前
$err_text_name = "";
if ( IndisInputCheck( $text_name01 ) === false || IndisInputCheck( $text_name02 ) === false ){
$err_text_name = "必ずご入力ください。";
$flg_err = 1;
} else { // 入力があった場合
$text_name01 = Kana_Check( $text_name01 );
$text_name02 = Kana_Check( $text_name02 );
}
// フリガナ
$err_text_furi_name = "";
if ( IndisInputCheck( $text_furi_name01 ) === false || IndisInputCheck( $text_furi_name02 ) === false ){
$err_text_furi_name = "必ずご入力ください。";
$flg_err = 1;
} else { // 入力があった場合
if ( Katakana_Check( $text_furi_name01 ) === false || Katakana_Check( $text_furi_name02 ) === false ){
$err_text_furi_name = "全角カタカナでご入力ください。";
$flg_err = 1;
}
}
$err_radio_align = "";
if ( IndisInputCheck( $radio_align ) === false ){ // 属性
$err_radio_align = "必ず選択してください。";
$flg_err = 1;
}
$err_chk_doui = "";
if ( IndisInputCheck( $chk_doui ) === false ){ // 同意チェック
$err_chk_doui = "お問い合わせいただく際は必ずチェックしてください。";
$flg_err = 1;
}
$err_text_inquiry = "";
if ( IndisInputCheck( $text_inquiry ) === false ){ // お問い合わせ内容
$err_text_inquiry = "必ずご入力ください。";
$flg_err = 1;
}
$err_mail_address = "";
if ( IndisInputCheck( $mail_address ) === false ){ // メールアドレス
$err_mail_address = "必ずご入力ください。";
$flg_err = 1;
} else {
if ( Mail_Check( $mail_address ) === false ){
$err_mail_address = "不正なメールアドレスです。半角英数字で正しく入力してください。
ex ) xxxxx@xx.co.jp";
$flg_err = 1;
}
}
/* -------------------------
入力チェック(必須でない場合)
------------------------- */
$text_tel = "";
$err_text_tel = "";
if ( $text_tel01 || $text_tel02 || $text_tel03 ){ // 電話番号
if ( $text_tel01 && $text_tel02 && $text_tel03 ){
$text_tel = $text_tel01 . "-" . $text_tel02 . "-" . $text_tel03;
if ( PhoneNumber_Check( $text_tel ) === false ){
$err_text_tel = "入力に誤りがあります。桁数をご確認の上、半角数字でご入力ください。";
$flg_err = 1;
}
} else {
$err_text_tel = "入力する場合は、電話番号全ての欄に入力して下さい。";
$flg_err = 1;
}
}
if ( $text_company_name ){ // 会社名部署名
$text_company_name = Kana_Check( $text_company_name );
}
// Smarty へフォームの値をアサイン
$smarty->assign('text_inquiry', $text_inquiry);
$smarty->assign('text_name01', $text_name01);
$smarty->assign('text_name02', $text_name02);
$smarty->assign('text_furi_name01', $text_furi_name01);
$smarty->assign('text_furi_name02', $text_furi_name02);
$smarty->assign('text_tel01', $text_tel01);
$smarty->assign('text_tel02', $text_tel02);
$smarty->assign('text_tel03', $text_tel03);
$smarty->assign('text_tel', $text_tel);
$smarty->assign('mail_address', $mail_address);
$smarty->assign('radio_align', $radio_align);
$smarty->assign('text_company_name', $text_company_name);
$smarty->assign('chk_doui', $chk_doui);
/* 入力にエラーがあった場合 */
if ($flg_err > 0){
// Smarty へエラーテキストをアサイン
$smarty->assign('err_text_inquiry', $err_text_inquiry);
$smarty->assign('err_text_name', $err_text_name);
$smarty->assign('err_text_furi_name', $err_text_furi_name);
$smarty->assign('err_mail_address', $err_mail_address);
$smarty->assign('err_text_tel', $err_text_tel);
$smarty->assign('err_radio_align', $err_radio_align);
$smarty->assign('err_chk_doui', $err_chk_doui);
// 入力画面に戻る
$smarty->display('input.tpl');
} else {
$smarty->display('confirm.tpl'); // 確認画面に進む
}
/* ========================================
★送信ボタンを押した場合(確認画面)
======================================== */
} elseif( !$confirm && $commit && $_SESSION["str_session_id"]) {
// エンコード
mb_language("uni");
mb_internal_encoding("UTF-8");
// 一部テキストを表示用に整形
$text_furi_name = $text_furi_name01 . " ". $text_furi_name02;
$text_name = $text_name01 . " " . $text_name02;
if ( $text_tel01 && $text_tel02 && $text_tel03 ){
$text_tel = $text_tel01 . "-" . $text_tel02 . "-" . $text_tel03;
} else {
$text_tel = "入力なし";
}
/* -----
ユーザー宛メール送信
----- */
// Smarty へ必要な情報をアサイン
//$smarty->assign('text_name', $text_name);
// ユーザー送信用 メールテンプレート呼び出し
//$mail_body = $smarty->fetch('mail_user.tpl');
//$mail_to = $mail_address;
// テキストをメール用に文字コード変換
//$mail_subject = MbEncodeText(USER_MAIL_TITLE);
//$mail_subject = MbMineEncode($mail_subject); // MIMEヘッダ用
//$mail_from = USER_FROM_ADDRESS;
//$mail_body = MbEncodeText($mail_body);
//ヘッダエンコード
//$mail_header .= "MIME-Version: 1.0 \n";
//$mail_header .= "From:" . $mail_from;
//$mail_header = MbMineEncode($mail_header);
// メール送信
//if ( SendMail ($mail_header, $mail_to, $mail_subject, $mail_body) == false ){
// $err_mail = "誠に申し訳ございません。メール送信処理に不具合が発生致しました。
エラー番号:002";
// $smarty->assign('err_mail', $err_mail);
//}
/* -----
管理者メール送信
----- */
// 新しい Smarty オブジェクトを用意する
$smarty02 = new Smarty;
// Smarty へ必要な情報をアサイン
$smarty02->assign('text_inquiry', $text_inquiry);
$smarty02->assign('text_name', $text_name);
$smarty02->assign('text_furi_name', $text_furi_name);
$smarty02->assign('text_tel', $text_tel);
$smarty02->assign('mail_address', $mail_address);
$smarty02->assign('radio_align', $radio_align);
$smarty02->assign('text_company_name', $text_company_name);
// ユーザー送信用 メールテンプレート呼び出し
$mail_body = $smarty02->fetch('mail_owner.tpl');
// テキストをメール用に文字コード変換
$mail_subject = MbEncodeText(OWNER_MAIL_TITLE);
$mail_subject = MbMineEncode($mail_subject); // MIMEヘッダ用
$mail_to = OWNER_TO_ADDRESS;
$mail_from = OWNER_FROM_ADDRESS;
$mail_body = MbEncodeText($mail_body);
//ヘッダエンコード
$mail_header = "MIME-Version: 1.0 \n";
$mail_header .= "From:" . $mail_from;
$mail_header = MbMineEncode($mail_header);
// メール送信
if ( SendMail ($mail_header, $mail_to, $mail_subject, $mail_body) == false ){
$err_mail = "誠に申し訳ございません。メール送信処理に不具合が発生致しました。
エラー番号:003";
$smarty->assign('err_mail', $err_mail);
}
// セッションを初期化、破棄
header('Location: thanks.html');
$flg_session = NULL;
$_SESSION = array();
session_unset();
@session_destroy();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()- 36000, '/');
}
} else {
header('Location: index.html');
$flg_session = NULL;
echo "入力に不正があった為、入力フォームを初期化しました。
大変お手数ですが、再入力をお願いいたします。";
}
?>