#!/usr/local/bin/perl -I/home/the-home/www/reserveData/perl_module # **************************************************** # * お問合わせフォームCGI # **************************************************** $|=1; #******************************************** #* モジュールセット #******************************************** use CGI::Carp qw(fatalsToBrowser) ; use HTML::Template; use Jcode; #******************************************** #* ライブラリセット #******************************************** require '/home/the-home/www/reserveData/jcode.pl'; require '/home/the-home/www/reserveData/common.pl'; #******************************************** #* 変数設定 #******************************************** my $myFile = &MyFileName; my $lockfile = $PathLock.'/'.$myFile.'.txt'; my $backPage = $myFile; my $formURL = $UrlSecure.'/cgi-bin/'.$myFile; my $inputDate = &LocalHostTimestamp(1); my $mailDate = &LocalHostTimestamp(4); my $outputFile = &MakeOutputFile('reserve_log'); my $outputFile = $PathCsv.'/'.$outputFile; my $stadioFile = "/home/the-home/www/the-home.nature-decor.com/studio/list.txt"; #******************************************** #* メール設定 #******************************************** my $mailSubject = '【WEB】RESERVE スタジオ予約 - The home'; my $mailFrom = 'the-home@nature-decor.com'; my $mailTo = 'the-home@nature-decor.com'; my $mailCc = ''; my $mailBcc = ''; my $mailMessage = ''; #****************************************************** #* テンプレート用変数設定 #****************************************************** my $tempHeader = "/home/the-home/www/the-home.nature-decor.com/header.html"; my $tempFooter = "/home/the-home/www/the-home.nature-decor.com/footer.html"; my $tempNavi = "/home/the-home/www/the-home.nature-decor.com/navi.html"; my $tempInput = $PathLib."/template/Input.html"; my $tempConfirm = $PathLib."/template/Confirm.html"; my $tempThanks = "http://the-home.nature-decor.com/studio/reserve/end.php"; my $tempMailAdmin = $PathLib."/template/MailAdmin.txt"; my $tempMailThanks = $PathLib."/template/MailThanks.txt"; #***************************************************** #* 変数 #***************************************************** my $flag; my $nameMain; my $nameKana; my $companyName; my $eMail; my $eMailConfirm; my $telNum; my $faxNum; my $year1; my $month1; my $days1; my $year2; my $month2; my $days2; my $year3; my $month3; my $days3; my $userNum; my $notesData; my $mailThanksTo; my $headerStr; my $footerStr; my $naviStr; # **************************************************** # * メイン処理開始 # **************************************************** &FormDataDecode; &GiveName; my $template = HTML::Template->new(filename => $tempHeader); $headerStr = $template->output; my $template = HTML::Template->new(filename => $tempFooter); $footerStr = $template->output; my $template = HTML::Template->new(filename => $tempNavi); $naviStr = $template->output; if($flag ne ''){ if (&DataCheck){ &PrintInput(); }else{ if ( $flag eq 'send' ){ if (&LockFileCheck($lockfile)){ &SystemError( 'システムエラー', $FILE_ERROR, $backPage, $lockfile ); }else{ &FileOutput( $outputFile ); &MailSend; &UnlinkLockFile($lockfile); print "Location:".$tempThanks."\n\n"; exit; } }else{ &PrintConfirm; } } }else{ &PrintInput(); } exit(); # **************************************************** # * メイン処理終了 # **************************************************** # **************************************************** # * デコードする関数 # **************************************************** sub FormDataDecode{ if ($ENV{'REQUEST_METHOD'} eq "POST"){ read(STDIN, $formInputData, $ENV{'CONTENT_LENGTH'}); }else{ $formInputData = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $formInputData); foreach $pair (@pairs){ my($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s///g; $value =~ s//>/g; $value =~ s/&/&/g; $value =~ s/"/”/g; $value =~ s/'/’/g; $FORM{$name} = $value; } } # **************************************************** # * 変数に名前を与える関数 # **************************************************** sub GiveName{ $flag = $FORM{'flag'}; $nameMain = $FORM{'nameMain'}; $nameKana = $FORM{'nameKana'}; $companyName = $FORM{'companyName'}; $eMail = $FORM{'email'}; $eMail = &HankakuConvert( $eMail ); if( $eMail ){ $mailThanksTo = $eMail; } $eMailConfirm = $FORM{'email_confirm'}; $eMailConfirm = &HankakuConvert( $eMailConfirm ); $telNum = $FORM{'telNum'}; $faxNum = $FORM{'faxNum'}; $year1 = $FORM{'year1'}; $month1 = $FORM{'month1'}; $days1 = $FORM{'days1'}; $year2 = $FORM{'year2'}; $month2 = $FORM{'month2'}; $days2 = $FORM{'days2'}; $year3 = $FORM{'year3'}; $month3 = $FORM{'month3'}; $days3 = $FORM{'days3'}; $userNum = $FORM{'userNum'}; $notesData = $FORM{'notesData'}; } # ********************************************************** # * データのチェック # ********************************************************** sub DataCheck{ $ErrorMessage = ""; if ( $nameMain ne "" && $nameKana ne "" && $telNum ne "" && $eMail ne "" ){ if( &StringOverCheck($nameMain,200) ){ $ErrorMessage .= "氏名は100文字以内で入力してください。
\n"; } if( &StringOverCheck($nameKana,200) ){ $ErrorMessage .= "氏名(ふりがな)は全角100文字以内で入力してください。
\n"; } if( &StringOverCheck($telNum,200) ){ $ErrorMessage .= "TELは全角100文字以内で入力してください。
\n"; } if( &MailAddressCheck($eMail) ){ $ErrorMessage .= "メールアドレスを正しく入力してください。
\n"; } if( &StringOverCheck($eMail,200) ){ $ErrorMessage .= "メールアドレスは半角200文字以内で入力してください。
\n"; } }else{ $ErrorMessage .= "【必須】項目を入力してください。
\n"; } if($eMail ne $eMailConfirm){ $ErrorMessage .= "メールアドレスが異なっています。
\n"; } if( &StringOverCheck($companyName,200) ){ $ErrorMessage .= "法人名は全角100文字以内で入力してください。
\n"; } if( &StringOverCheck($faxNum,200) ){ $ErrorMessage .= "FAXは全角100文字以内で入力してください。
\n"; } if( &StringOverCheck($userNum,200) ){ $ErrorMessage .= "ご利用人数は全角100文字以内で入力してください。
\n"; } if( &StringOverCheck($notesData,20000) ){ $ErrorMessage .= "お問い合わせ内容は全角10000文字以内で入力してください。
\n"; } if($ErrorMessage ne ""){ return(1); } return(0); } # ********************************************************** # * ファイルに書き込み # ********************************************************** sub FileOutput{ my $outFile = $_[0]; my $outputData; $notesData =~ s/\r\n/
/g; $notesData =~ s/\r/
/g; $notesData =~ s/\n/
/g; $outputData .= "$inputDate,"; open(FILE,"<$stadioFile") || &SystemError( 'システムエラー', $FILE_ERROR, $backPage, $lockfile ); while () { my $lineData = jcode( $_ )->sjis; my @buffArray = split(",", $lineData); my $formStr = 'ST_'.$buffArray[0]; my %devideColumn; if( $FORM{$formStr} ne "" ){ $outputData .= '『'.$buffArray[1].'』'; } push(@loop_data, \%devideColumn); } close(FILE); $outputData .= ","; $outputData .= "$nameMain,"; $outputData .= "$nameKana,"; $outputData .= "$companyName,"; $outputData .= "$eMail,"; $outputData .= "$telNum,"; $outputData .= "$faxNum,"; $outputData .= '"'."$year1年$month1月$days1日".'",'; $outputData .= '"'."$year2年$month2月$days2日".'",'; $outputData .= '"'."$year3年$month3月$days3日".'",'; $outputData .= "$userNum,"; $outputData .= "$notesData,"; $outputData .= "\n"; open(FILE,">>$outFile") || &SystemError( 'システムエラー', $FILE_ERROR, $backPage, $lockfile ); print FILE "$outputData"; close(FILE); } # ********************************************************** # * メール配信 # ********************************************************** sub MailSend{ $notesData =~ s/
/\r\n/g; $notesData =~ s/
/\r/g; $notesData =~ s/
/\n/g; my @loop_data; open(FILE,"<$stadioFile") || &SystemError( 'システムエラー', $FILE_ERROR, $backPage, $lockfile ); while () { my $lineData = jcode( $_ )->sjis; my @buffArray = split(",", $lineData); my $formStr = 'ST_'.$buffArray[0]; my %devideColumn; if( $FORM{$formStr} ne "" ){ $devideColumn{STADIO_NAME} = $buffArray[1]; push(@loop_data, \%devideColumn); } } close(FILE); my $template = HTML::Template->new(filename => $tempMailAdmin); $template->param( INPUT_DATE => $inputDate, FORM_URL => $formURL, NAME_MAIN => $nameMain, NAME_KANA => $nameKana, COMPANY_NAME => $companyName, EMAIL => $eMail, TEL_NUM => $telNum, FAX_NUM => $faxNum, YEAR1 => $year1, MONTH1 => $month1, DAYS1 => $days1, YEAR2 => $year2, MONTH2 => $month2, DAYS2 => $days2, YEAR3 => $year3, MONTH3 => $month3, DAYS3 => $days3, USER_NUM => $userNum, NOTES_DATA => $notesData, THIS_LOOP => \@loop_data ); $mailMessage = $template->output; &LocalSendMail( $mailSubject, $mailFrom, $mailTo, $mailCc, $mailBcc, $mailMessage ); my $template = HTML::Template->new(filename => $tempMailThanks); $template->param( INPUT_DATE => $inputDate, FORM_URL => $formURL ); $mailMessage = $template->output; &LocalSendMail( $mailSubject, $mailFrom, $mailThanksTo, $mailCc, $mailBcc, $mailMessage ); } # ********************************************************** # * 入力画面の出力 # ********************************************************** sub PrintInput{ $list_year1 = &MakeYearPull( $year1 ); $list_month1 = &MakeMonthPull( $month1 ); $list_days1 = &MakeDayPull( $days1 ); $list_year2 = &MakeYearPull( $year2 ); $list_month2 = &MakeMonthPull( $month2 ); $list_days2 = &MakeDayPull( $days2 ); $list_year3 = &MakeYearPull( $year3 ); $list_month3 = &MakeMonthPull( $month3 ); $list_days3 = &MakeDayPull( $days3 ); my @loop_data; open(FILE,"<$stadioFile") || &SystemError( 'システムエラー', $FILE_ERROR, $backPage, $lockfile ); while () { my $lineData = jcode( $_ )->sjis; my @buffArray = split(",", $lineData); my $formStr = 'ST_'.$buffArray[0]; my %devideColumn; $devideColumn{STADIO_IMG} = '/studio/'.$buffArray[0].'/images/top_thum.jpg'; $devideColumn{STADIO_CH_NAME} = $formStr; $devideColumn{STADIO_NAME} = $buffArray[1]; if( $FORM{$formStr} ne "" ){ $devideColumn{STADIO_CHECKED} = "checked"; } push(@loop_data, \%devideColumn); } close(FILE); my $template = HTML::Template->new(filename => $tempInput); $template->param( MY_FILE => $myFile, HEADER_STR => $headerStr, FOOTER_STR => $footerStr, NAVI_STR => $naviStr, NAME_MAIN => $nameMain, NAME_KANA => $nameKana, COMPANY_NAME => $companyName, EMAIL => $eMail, EMAIL_CONFIRM => $eMailConfirm, TEL_NUM => $telNum, FAX_NUM => $faxNum, YEAR1 => $list_year1, MONTH1 => $list_month1, DAYS1 => $list_days1, YEAR2 => $list_year2, MONTH2 => $list_month2, DAYS2 => $list_days2, YEAR3 => $list_year3, MONTH3 => $list_month3, DAYS3 => $list_days3, USER_NUM => $userNum, NOTES_DATA => $notesData, ERROR_MSG => $ErrorMessage, FLAG => 'conrfirm', THIS_LOOP => \@loop_data ); print "Content-type: text/html\n\n"; print $template->output; } # ********************************************************** # * 確認画面の出力 # ********************************************************** sub PrintConfirm{ $notesData =~ s/\r\n/
/g; $notesData =~ s/\r/
/g; $notesData =~ s/\n/
/g; my $submitBtn; $submitBtn .= ''; $submitBtn .= ''; $submitBtn .= ''; $submitBtn .= ''; $submitBtn .= ''; $submitBtn .= ''; $submitBtn .= '
'; $submitBtn .= '
'; $submitBtn .= ''; $submitBtn .= ''; $submitBtn .= &PrintHidden(); $submitBtn .= '
'; $submitBtn .= '
'; $submitBtn .= ''; $submitBtn .= ''; $submitBtn .= '
'; $submitBtn .= ''; $submitBtn .= &PrintHidden(); $submitBtn .= '
'; $submitBtn .= '
'; my @loop_data; open(FILE,"<$stadioFile") || &SystemError( 'システムエラー', $FILE_ERROR, $backPage, $lockfile ); while () { my $lineData = jcode( $_ )->sjis; my @buffArray = split(",", $lineData); my $formStr = 'ST_'.$buffArray[0]; my %devideColumn; if( $FORM{$formStr} ne "" ){ $devideColumn{STADIO_IMG} = '/studio/'.$buffArray[0].'/images/top_thum.jpg'; $devideColumn{STADIO_NAME} = $buffArray[1]; push(@loop_data, \%devideColumn); } } close(FILE); my $template = HTML::Template->new(filename => $tempConfirm); $template->param( HEADER_STR => $headerStr, FOOTER_STR => $footerStr, NAVI_STR => $naviStr, NAME_MAIN => $nameMain, NAME_KANA => $nameKana, COMPANY_NAME => $companyName, EMAIL => $eMail, TEL_NUM => $telNum, FAX_NUM => $faxNum, YEAR1 => $year1, MONTH1 => $month1, DAYS1 => $days1, YEAR2 => $year2, MONTH2 => $month2, DAYS2 => $days2, YEAR3 => $year3, MONTH3 => $month3, DAYS3 => $days3, USER_NUM => $userNum, NOTES_DATA => $notesData, SUMIT_BTN => $submitBtn, THIS_LOOP => \@loop_data ); print "Content-type: text/html\n\n"; print $template->output; } # ********************************************************** # * hidden値リストを出力 # ********************************************************** sub PrintHidden{ my $hiddenStr; $hiddenStr = <<"_HTML_"; _HTML_ open(FILE,"<$stadioFile") || &SystemError( 'システムエラー', $FILE_ERROR, $backPage, $lockfile ); while () { my $lineData = jcode( $_ )->sjis; my @buffArray = split(",", $lineData); my $formStr = 'ST_'.$buffArray[0]; my %devideColumn; $hiddenStr .= ''."\n"; } close(FILE); return $hiddenStr; }