#------------------------------------------------- # ▼設定項目 #------------------------------------------------- # ページタイトル $html_title = 'アクエリアス情報研究所'; # 管理画面トップページのリスト表示件数 $view_limit = 10; # データファイルの設定 $column_file = '../data/column/column.dat'; $column_seq_code_file = '../data/column/column_seq_code.dat'; $column_body_data_dir = '../data/column/body/'; $column_body_data_extension = '.txt'; $column_img_dir = '../data/column/image/'; # ファイルロック形式 # → 0=no 1=symlink関数 2=mkdir関数 $lockkey = 1; # ロックファイル名 $lockfile = '../data/column/db.lock'; # テーブルの幅 $table_width = 760; # テーブルの線の色 $table_line_color = '#000000'; # テーブルのセル間隔 $table_cellspacing = 1; # テーブルのセル余白 $table_cellpadding = 2; # テーブルのボーダー $table_border = 0; # テーブルのセルの色 $table_cellcolor_1 = '#FFFFFF'; $table_cellcolor_2 = '#B8DB6F'; # テーブルのヘッダー色 $table_head_bgcolor_1 = '#999999'; $table_head_bgcolor_2 = '#999999'; # データファイルの設定 $column_stylesheet = '../style.css'; $column_header_file = '../data/column/header.txt'; $column_footer_file = '../data/column/footer.txt'; # スペーサー画像 $space_gif = '/imgages/global/space.gif'; #--------------------# # フォームデコード # #--------------------# sub decode { if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } else { $buffer = $ENV{'QUERY_STRING'}; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # 文字コード変換 &jcode'convert(*value,'euc'); # 禁止文字変換 $value =~ s/<>/<>/g; $in{$name} = $value; } } #--------------# # ロック処理 # #--------------# sub lock { # リトライ回数 local($retry) = 5; # 古いロックは削除 if (-e $lockfile) { local($mtime) = (stat($lockfile))[9]; if ($mtime < time - 30) { &unlock; } } # symlink関数式ロック if ($lockkey == 1) { while (!symlink(".", $lockfile)) { if (--$retry <= 0) { die "ファイルロック中です\n"; } sleep(1); } # mkdir関数式ロック } elsif ($lockkey == 2) { while (!mkdir($lockfile, 0755)) { if (--$retry <= 0) { die "ファイルロック中です\n"; } sleep(1); } } $lockflag=1; } #--------------# # ロック解除 # #--------------# sub unlock { if ($lockkey == 1) { unlink($lockfile); } elsif ($lockkey == 2) { rmdir($lockfile); } $lockflag=0; } #----------------# # 時間変換処理 # #----------------# sub ConvertTime { local($cnvttimes) = @_; local($exchangetimes); local($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($cnvttimes); $year += 1900; $mon += 1; $exchangetimes = sprintf("%04d/%02d/%02d",$year,$mon,$day); return ($exchangetimes); } #---------------------# # 時間変換処理その2 # #---------------------# sub ConvertTime2 { local($cnvttimes) = @_; local($exchangetimes); local($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime($cnvttimes); $year += 1900; $mon += 1; $exchangetimes = sprintf("%04d年%02d月%02d日",$year,$mon,$day); return ($exchangetimes); } #------------------# # ヘッダーの出力 # #------------------# sub mkheader { # ヘッダーファイルの読み込み local ($mkhtml_header) = ""; if (-e $column_header_file) { open(IN,"$column_header_file") || die "ヘッダーファイルが見つかりませんでした\n"; while ($line = ) { $mkhtml_header .= $line; } close(IN); } # ヘッダーの出力 print "Content-type: text/html\n\n"; print <<"EOM"; $html_title
EOM print $mkhtml_header; } #------------------# # フッターの出力 # #------------------# sub mkfooter { # フッターファイルの読み込み local ($mkhtml_footer) = ""; if (-e $column_footer_file) { open(IN,"$column_footer_file") || die "ヘッダーファイルが見つかりませんでした\n"; while ($line = ) { $mkhtml_footer .= $line; } close(IN); } print $mkhtml_footer; print <<"EOM";
EOM } 1;