#!/usr/bin/perl ################################################################################################################################################################################ ################################################## The character code of this document is `euc-jp`. ################################################## ################################################## Copyright(C) Studio Canbe. All rights reserved. ################################################## ################################################## Last update : 2006/05/31 ################################################## ################################################################################################################################################################################ use CGI::Carp qw(fatalsToBrowser); ########## ライブラリインポート ########## # CGI共通ライブラリのインポート require "__common/common.pl"; # 日本語コード変換ライブラリのインポート require "__common/jcode.pl"; # フォーム初期設定ライブラリのインポート require "__form/default.cfg"; ########## メイン処理 ########## MAIN:{ foreach $data(&fread($CONFIG{'csv_column_file'}, 0, 1)){ chomp $data; $FORM{$data} = ""; } &decode; $errmsg = &input_check; ##●入力ページ if($FORM{'mode'} eq ""){ ## エラーログを削除 undef $errmsg; ## 入力ページ &input_html; } ##●再入力ページ elsif($errmsg ne "" || $FORM{'mode'} eq "input_html"){ ## HTML エンコード foreach $key(keys %FORM){ $FORM{$key} = &html_encode($FORM{$key}); } ## 再入力ページ &input_html; } ##●内容確認ページ elsif($FORM{'mode'} eq "confirm_html"){ ## HTML エンコード foreach $key(keys %FORM){ $FORM{$key} = &html_encode($FORM{$key}); } ## 内容確認ページ &confirm_html; } ##●メール送信, 送信完了ページ elsif($FORM{'mode'} eq "complete_html"){ ## データセット $FORM{'note'} =~ s/\r\n/\n/g; ## E-MAILが未入力の場合、代入する if($FORM{'email'} eq ""){ $TEMP{'from_email'} = $CONFIG{'non_from_email'}; } else{ $TEMP{'from_email'} = $FORM{'email'}; } ## メールの送信:サイト管理者宛 $mail_body = &make_mail_body($CONFIG{'body_file_admin'}); $mail_sender = &base64encode_email("$FORM{'s_name'} 様"); $from_email = "\"$mail_sender\" <$TEMP{'from_email'}>"; $subject = &base64encode_email($CONFIG{'subject_admin'}); &sendmail($CONFIG{'error_email'}, $CONFIG{'to_email'}, $CONFIG{'cc_email'}, $CONFIG{'bcc_email'}, $from_email, $subject, $mail_body, '', 0); ## 完了ページ表示 &location($CONFIG{'thanks_html'}); } } ################################################################################################################################################################################ ################################################## SUB ROUTINE ################################################## ################################################################################################################################################################################ ########## メール本文作成 ########## sub make_mail_body { ##●引数 ## テンプレートファイル名 my($file_name) = @_; ##●戻り値 ## メール本文 my($mail_body); ##●ローカル変数 ##●処理 ##●MAILデータ作成 ## お伝えしたいメッセージ $MAIL{'note'} = &wrap_text($FORM{'note'}, 64, 2, 0); ##●テンプレートファイル読み込み、タグの置換 $mail_body = join("", &fread($file_name, 0, 1)); ## 置換:FORM値 foreach $key(sort keys %FORM){ if($key =~ /^mode$/){ next; } $mail_body =~ s/<$key>/$FORM{$key}/sg; } ## 置換:MAIL値 foreach $key(sort keys %MAIL){ $mail_body =~ s//$MAIL{$key}/sg; } ## 置換:例外処理 return($mail_body); } ########## 入力チェック ########## sub input_check { ##●ローカル変数 my($errmsg); my(@data); ## 当日データ取得 &get_current_times; ## 変更日時 タイムスタンプ $FORM{'change_timestamp'} = time; ## 患者様:お名前 (※) if($FORM{'name'} eq ""){ $errmsg .= "【患者様:お名前】が入力されていません。
\n"; } elsif(length($FORM{'name'}) > 50){ $errmsg .= "【患者様:お名前】のバイト数が [ 50 ] を超えています。
\n"; } ## 患者様:フリガナ (※) if($FORM{'f_name'} eq ""){ $errmsg .= "【患者様:フリガナ】が入力されていません。
\n"; } elsif(length($FORM{'f_name'}) > 50){ $errmsg .= "【患者様:フリガナ】のバイト数が [ 50 ] を超えています。
\n"; } ## 患者様:性別 if($FORM{'gender'} ne ""){ if(&compare_tdb("DATABASE/gender.dia", $FORM{'gender'}) == 0){ $errmsg .= "【患者様:性別 [ $FORM{'gender'} ]】は存在しません。
\n"; } } ## 患者様:病室 if(length($FORM{'ward'}) > 50){ $errmsg .= "【患者様:病室】のバイト数が [ 50 ] を超えています。
\n"; } ## 患者様:号室 if(length($FORM{'room_num'}) > 50){ $errmsg .= "【患者様:号室】のバイト数が [ 50 ] を超えています。
\n"; } ## お見舞いメッセージ (※) if($FORM{'note'} eq ""){ $errmsg .= "【お見舞いメッセージ】が入力されていません。
\n"; } if(length($FORM{'note'}) > 800){ $errmsg .= "【お見舞いメッセージ】のバイト数が [ 800 ] を超えています。
\n"; } ## 送り主様:お名前 (※) if($FORM{'s_name'} eq ""){ $errmsg .= "【送り主様:お名前】が入力されていません。
\n"; } elsif(length($FORM{'s_name'}) > 50){ $errmsg .= "【送り主様:お名前】のバイト数が [ 50 ] を超えています。
\n"; } ## 送り主様:フリガナ (※) if($FORM{'s_f_name'} eq ""){ $errmsg .= "【送り主様:フリガナ】が入力されていません。
\n"; } elsif(length($FORM{'s_f_name'}) > 50){ $errmsg .= "【送り主様:フリガナ】のバイト数が [ 50 ] を超えています。
\n"; } ## 送り主様:郵便番号:本番 $FORM{'zipcode1'} = &zen2han($FORM{'zipcode1'}); if($FORM{'zipcode1'} ne ""){ if((length $FORM{'zipcode1'} != 3) || ($FORM{'zipcode1'} =~ /[^0-9]/)){ $errmsg .= "【送り主様:郵便番号:本番】が正しく入力されていません。
\n"; } } ## 送り主様:郵便番号:枝番 $FORM{'zipcode2'} = &zen2han($FORM{'zipcode2'}); if($FORM{'zipcode2'} ne ""){ if((length $FORM{'zipcode2'} != 4) || ($FORM{'zipcode2'} =~ /[^0-9]/)){ $errmsg .= "【送り主様:郵便番号:枝番】が正しく入力されていません。
\n"; } } ## 送り主様:ご住所 if(length($FORM{'s_address'}) > 250){ $errmsg .= "【送り主様:ご住所】のバイト数が [ 250 ] を超えています。
\n"; } ## 送り主様:電話番号 if($FORM{'s_tel1'} ne "" || $FORM{'s_tel2'} ne "" || $FORM{'s_tel3'} ne ""){ ## 送り主様:電話番号:市外局番 (※) $FORM{'s_tel1'} = &zen2han($FORM{'s_tel1'}); if($FORM{'s_tel1'} eq ""){ $errmsg .= "【送り主様:電話番号:市外局番】が入力されていません。
\n"; } elsif($FORM{'s_tel1'} =~ /[^0-9]/){ $errmsg .= "【送り主様:電話番号:市外局番】が正しく入力されていません。
\n"; } elsif(length($FORM{'s_tel1'}) > 7){ $errmsg .= "【送り主様:電話番号:市外局番】のバイト数が [ 7 ] を超えています。
\n"; } ## 送り主様:電話番号:市内局番 (※) $FORM{'s_tel2'} = &zen2han($FORM{'s_tel2'}); if($FORM{'s_tel2'} eq ""){ $errmsg .= "【送り主様:電話番号:市内局番】が入力されていません。
\n"; } elsif($FORM{'s_tel2'} =~ /[^0-9]/){ $errmsg .= "【送り主様:電話番号:市内局番】が正しく入力されていません。
\n"; } elsif(length($FORM{'s_tel2'}) > 7){ $errmsg .= "【送り主様:電話番号:市内局番】のバイト数が [ 7 ] を超えています。
\n"; } ## 送り主様:電話番号:加入番号 (※) $FORM{'s_tel3'} = &zen2han($FORM{'s_tel3'}); if($FORM{'s_tel3'} eq ""){ $errmsg .= "【送り主様:電話番号:加入番号】が入力されていません。
\n"; } elsif($FORM{'s_tel3'} =~ /[^0-9]/){ $errmsg .= "【送り主様:電話番号:加入番号】が正しく入力されていません。
\n"; } elsif(length($FORM{'s_tel3'}) > 7){ $errmsg .= "【送り主様:電話番号:加入番号】のバイト数が [ 7 ] を超えています。
\n"; } ## 送り主様:電話番号 $FORM{'s_tel'} = "$FORM{'s_tel1'}-$FORM{'s_tel2'}-$FORM{'s_tel3'}"; } ## 台紙 (※) if($FORM{'type'} eq ""){ $errmsg .= "【台紙】が選択されていません。
\n"; } elsif(&compare_tdb("DATABASE/type.dia", $FORM{'type'}) == 0){ $errmsg .= "【台紙 [ $FORM{'type'} ]】は存在しません。
\n"; } ## アクセス元IPアドレス $FORM{'remote_addr'} = $ENV{'REMOTE_ADDR'}; return $errmsg; } ################################################################################################################################################################################ ################################################## HTML ################################################## ################################################################################################################################################################################ ########## 再入力ページ ########## sub input_html { ##●引数 ## なし ##●戻り値 ## なし ##●ローカル変数 my(@data); my($output_html); ##●処理 ##●HTMLデータ作成 ## 性別 @data = &fread("DATABASE/gender.dia", 0, 1); for(my $i = 0; $i < @data; $i++){ my($code, $name) = split(/<>/, $data[$i]); if($code eq $FORM{'gender'}){ $HTML{"gender$i"} = " CHECKED"; } else{ $HTML{"gender$i"} = ""; } } ## 台紙 @data = &fread("DATABASE/type.dia", 0, 1); for(my $i = 0; $i < @data; $i++){ my($code, $name) = split(/<>/, $data[$i]); if($code eq $FORM{'type'}){ $HTML{"type$i"} = " CHECKED"; } else{ $HTML{"type$i"} = ""; } } ##●テンプレートファイル読み込み、タグの置換 $output_html = join("", &fread($CONFIG{'input_html'}, 0, 1)); ## 置換:エラーメッセージ、ACTION属性 $output_html =~ s/###errmsg###/$errmsg/sg; $output_html =~ s/###action###/$ENV{'SCRIPT_NAME'}/sg; ## 置換:FORM値 foreach $key(sort keys %FORM){ if($key =~ /^mode$/){ next; } $output_html =~ s/###$key###/$FORM{$key}/sg; } ## 置換:HTML値 foreach $key(sort keys %HTML){ $output_html =~ s/###html_$key###/$HTML{$key}/sg; } ## 置換:例外処理 ##●ページ出力 print <