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 "入力に不正があった為、入力フォームを初期化しました。
大変お手数ですが、再入力をお願いいたします。"; } ?>