$v) { $count[$k] = 0; } $log_file = '/home/httpd/client_form/premama/logs/num.csv'; $fp = fopen($log_file, 'r'); while ($row = fgetcsv($fp)) { $count[$row[0]] += $row[1]; } foreach ($count AS $k => $v) { if ($limit <= $v) unset($date[$k]); } $log_dir = '/home/httpd/client_form/premama/logs/'; $read_file = '/home/httpd/client_form/premama/mail/mail.txt'; $template_dir = 'client_form/premama/'; $template_file = 'index.tpl'; $from = 'info@tochinavi.net'; $from_name = '栃ナビ!'; /* PHPエラー表示設定 */ ini_set( "display_errors", LOCOMILL_DISPLAY_ERROR ); /* Locomillクラスインスタンス生成 */ if( $err_str === "" ) { try { $locomill = new Locomill( $_COOKIE ); } catch( LocomillError $e ) { $err_str .= $e->get_exception(); } } /* 出力準備 */ $smarty = new SmartyEx(); $smarty->prepare(); /* Areaクラスインスタンス生成 */ if( $err_str === "" ) { try { $area = new Area( $locomill->get_db3() ); $temp = $area->get_data_array('area_master_03_tbl', true); foreach ($temp AS $v) $area_03_array[$v['id']] = $v['name']; } catch( AreaError $e) { $err_str .= $e->get_exception(); } } /* Validateクラスインスタンス生成 */ if( $err_str === "" ) { try { $validate = new Validate(); } catch( ValidateError $e ) { $err_str .= $e->get_exception(); } } /* 回答制限 */ if( $err_str === "" ) { if (empty($date)) $err_str = '定員を超えたため、応募を締切らせていただきました。'; } /* Request値の検証 */ if( $err_str === "" ) { if (!empty($_POST)) $rq = $_POST; if (!empty($rq['action'])) { $action = $rq['action']; unset($rq['action']); } if (isset($_GET['thanks'])) { $template_file = 'thanks.tpl'; $smarty->display( $template_dir . $template_file ); exit; } elseif ($action == 'check' || $action == 'return' || $action == 'exec') { if (!$validate->__range($rq['name'], 1, 255)) { $errmsg[] = "・氏名の入力が正しくありません。"; } if (!$validate->__tel(sprintf('%s-%s-%s', $rq['tel1'], $rq['tel2'], $rq['tel3']))) { $errmsg[] = "・携帯電話番号の入力が正しくありません。"; } if (!$validate->__email($rq['email'])) { $errmsg[] = "・連絡用メールアドレスの入力が正しくありません。"; } elseif ($rq['email'] != $rq['email_check']) { $errmsg[] = "・連絡用メールアドレスが確認用と異なります。"; } if (!array_key_exists($rq['num1'], $num1)) { $errmsg[] = "・受講するプレママの人数の選択が正しくありません。"; } if (!array_key_exists($rq['num2'], $num2)) { $errmsg[] = "・参加人数(大人)の選択が正しくありません。"; } if (!array_key_exists($rq['num3'], $num3)) { $errmsg[] = "・参加人数(子供)の選択が正しくありません。"; } if (!array_key_exists($rq['date'], $date)) { $errmsg[] = "・誠に申し訳ございませんが、ご指定の日時は定員に達しました。"; } elseif ($limit < ($count[$rq['date']] + $rq['num1'])) { $errmsg[] = "・誠に申し訳ございませんが、ご指定の日時は定員オーバーです。"; } if (0 < $rq['num1']) { for ($i=1;$i<=count($num1);$i++) { if ($i <= $rq['num1']) { if (!$validate->__range($rq['name'.$i], 1, 255)) { $errmsg[] = "・受講者名".$i."の氏名の入力が正しくありません。"; } if (!array_key_exists($rq['age'.$i], $age)) { $errmsg[] = "・受講者名".$i."の年齢の選択が正しくありません。"; } if (!array_key_exists($rq['area'.$i], $area_03_array)) { $errmsg[] = "・受講者名".$i."のお住まいのエリアの選択が正しくありません。"; } if (!array_key_exists($rq['plan'.$i], $plan)) { $errmsg[] = "・受講者名".$i."の予定日の選択が正しくありません。"; } if (!array_key_exists($rq['present'.$i], $present)) { $errmsg[] = "・受講者名".$i."の洗える授乳クッションの選択が正しくありません。"; } } else { $rq['name'.$i] = ''; $rq['age'.$i] = ''; $rq['area'.$i] = ''; $rq['plan'.$i] = ''; $rq['present'.$i] = ''; } } } if (empty($rq['media'])) { // $errmsg[] = "・イベントを知ったきっかけの選択が正しくありません。"; } if (empty($errmsg)) { if( $action == 'check' ) { $template_file = 'confirm.tpl'; } elseif ($action == 'return') { } elseif ($action == 'exec') { // ログ登録 $log_file = 'logs.csv'; $log = array(); $log[] = date('Y/m/d H:i'); $log[] = $rq['name']; $log[] = sprintf('%s-%s-%s', $rq['tel1'], $rq['tel2'], $rq['tel3']); $log[] = $rq['email']; $log[] = $num1[$rq['num1']]; $log[] = $num2[$rq['num2']]; $log[] = $num3[$rq['num3']]; $log[] = $date[$rq['date']]; for ($i=1;$i<=count($num1);$i++) { $log[] = $rq['name'.$i]; $log[] = $age[$rq['age'.$i]]; $log[] = $area_03_array[$rq['area'.$i]]; $log[] = $plan[$rq['plan'.$i]]; $log[] = $present[$rq['present'.$i]]; } $temp = array(); if (!empty($rq['media'])) { foreach ($rq['media'] AS $v) { $temp[] = $media[$v]; } } $log[] = implode("\n", $temp); foreach ($log AS $k => $v) { $log[$k] = '"' . $v . '"'; } $csv = (!empty($log)) ? join(',', $log) . "\n":''; $csv = mb_convert_encoding($csv, 'SJIS-win', mb_detect_encoding($csv)); $log_path = $log_dir . $log_file; if (is_file($log_path) && is_writable($log_path)) { $fp = fopen($log_path, 'a+'); $result = fputs($fp,$csv); fclose($fp); } $log_file = 'num.csv'; $log = array(); $log[] = $rq['date']; $log[] = $rq['num1']; foreach ($log AS $k => $v) { $log[$k] = '"' . $v . '"'; } $csv = (!empty($log)) ? join(',', $log) . "\n":''; $csv = mb_convert_encoding($csv, 'SJIS-win', mb_detect_encoding($csv)); $log_path = $log_dir . $log_file; if (is_file($log_path) && is_writable($log_path)) { $fp = fopen($log_path, 'a+'); $result = fputs($fp,$csv); fclose($fp); } // サンクスメール $send_email = htmlspecialchars($rq['email']); if (file_exists($read_file)) { $send_data = file($read_file); if (!empty($send_data)) { $member = ''; for ($i=1;$i<=$rq['num1'];$i++) { $member .= '受講者'.$i."\n"; $member .= '氏名          /'.$rq['name'.$i]."\n"; $member .= '年齢          /'.$age[$rq['age'.$i]]."\n"; $member .= 'お住まいのエリア    /'.$area_03_array[$rq['area'.$i]]."\n"; $member .= '予定日         /'.$plan[$rq['plan'.$i]]."\n"; $member .= '洗える授乳クッション  /'.$present[$rq['present'.$i]]."\n"; } $temp = array(); if (!empty($rq['media'])) { foreach ($rq['media'] AS $v) { $temp[] = $media[$v]; } } $media = implode(' ', $temp); $to = $send_email; $to_name = $send_email; $subject = array_shift($send_data); $subject = set_multibyte_mime($subject, 'UTF-8', 'ISO-2022-JP'); $message = implode('', $send_data); $message = str_replace( "{##NAME##}", $rq['name'], $message ); $message = str_replace( "{##TEL##}", sprintf('%s-%s-%s', $rq['tel1'], $rq['tel2'], $rq['tel3']), $message ); $message = str_replace( "{##EMAIL##}", $rq['email'], $message ); $message = str_replace( "{##NUM1##}", $num1[$rq['num1']], $message ); $message = str_replace( "{##NUM2##}", $num2[$rq['num2']], $message ); $message = str_replace( "{##NUM3##}", $num3[$rq['num3']], $message ); $message = str_replace( "{##DATE##}", $date[$rq['date']], $message ); $message = str_replace( "{##MEMBER##}", $member, $message ); $message = str_replace( "{##MEDIA##}", $media, $message ); $message = str_replace( "
", "\r", $message ); locomill_send_mail3( $to, $to_name, $from, $from_name, $return_to, $subject, $message ); locomill_send_mail3( $from, $to_name, $from, $from_name, $return_to, $subject, $message ); } else { $err_str .= "・送信に失敗しました(内部テンプレート欠損)。
"; } } else { $err_str .= "・送信に失敗しました(内部テンプレートエラー)。
"; } header( 'Location: index.shtml?thanks' ); exit; } } } else { $rq = array('num1' => 1, 'date' => 1); } } /* 変数の準備 */ foreach ($rq AS $k => $v) { if (is_array($v)) { foreach ($v AS $v2) { $values[$k][] = htmlspecialchars($v2); } } else { $values[$k] = htmlspecialchars($v); } } $smarty->assign( "VALUES", $values ); $smarty->assign( "NUM1", $num1 ); $smarty->assign( "NUM1_COUNT", count($num1) ); $smarty->assign( "NUM2", $num2 ); $smarty->assign( "NUM3", $num3 ); if ($template_file == 'index.tpl') { foreach ($date AS $k => $v) { $date[$k] = $v.'(残り'.($limit - $count[$k]).'人)'; } } $smarty->assign( "DATE", $date ); $smarty->assign( "AGE", $age ); $smarty->assign( "AREA", $area_03_array ); $smarty->assign( "PLAN", $plan ); $smarty->assign( "PRESENT", $present ); $smarty->assign( "MEDIA", $media ); // エラー文字列 $smarty->assign( "ERRMSG", trim(join('
', $errmsg))); $smarty->assign( "ERR_STR", $err_str ); /* 出 力 */ $smarty->display( $template_dir . $template_file );