\n";
if($show_no){ print "No. | "; }
print "$namae | ";
if($show_mail){ print "Mail | "; }
if($show_url){ print "Map | "; }
$x=0;
foreach(@show){
$sortno = $_ + 19;
print"$koumoku[$_]";
$x++;
}
if($show_img){ print " | 画像 | "; }
if($show_lastup){print "更新時間 | "; }
print"
\n";
# テーブル本体部分の表示開始
$i = 0;
$j = 0;
$K = 0;
$flag=0;
$count = $max;
$max_no = $max * $max_table;
$page = $in{'page'};
$start = $page + 1;
$end = $page + $max_no;
foreach(@LINES){
if($max && $i == $count){
$flag=1;
$count = $count + $max;
}
$i++;
if ($i < $start) { next; }
elsif($i > $end){ $i = $#LINES + 1; last; }
$j = $page + 1; # ページの先頭の場合
if($i == $j){ $flag= 0; }
$_ =~ s/\s*$//;
($num,$name,undef,$last_time,$time1,$imgno,undef,$mail,$mailflag,$url,$imgurl,$tail,undef,undef,undef,undef,undef,undef,undef,@item) = split(/,/);
# 一定量ごとにテーブルを閉じる→見出しの再表示
if($flag){
$flag=0;
print "
\n";
print "\n";
if($show_no){ print "No. | "; }
print "$namae | ";
if($show_mail){ print "Mail | "; }
if($show_url){ print "Map | "; }
$x=0;
foreach(@show){
$sortno = $_ + 19;
print"$koumoku[$_] | ";
$x++;
}
if($show_img){ print "画像 | "; }
if($show_lastup){print "更新時間 | "; }
print "
\n";
}
# 本体表示部分を改造したい場合はここから下
if($K){ print""; $K=0; }
else{ print"
"; $K=1; }
if($show_no){ print"$num | "; }
if($name){ print"$name | ";}
else{print"--- | ";}
# メール表示
if($show_mail){
if($mail && !$mailflag){ print"$maillink | " }
elsif($mail && $mailflag && $formmail){ print"$maillink | " }
else{ print "− | " }
}
# ホームページへのリンク表示
if($show_url){
if($url){ print"$urllink | " }
else{ print "− | " }
}
# 項目表示
$x=0;
foreach(@show){
if($item[$_-1] eq ''){print" | ";}
else{print"$item[$_-1] | ";}
$x++;
}
# 画像の有無チェック
if($show_img){
if($uptype){
if($tail){ print"$imglink | " }
else{ print "− | " }
}
else{
if($imgurl){ print"$imglink | " }
else{ print "− | " }
}
}
# 前回の更新時間を表示
if($show_lastup){
if($last_time eq ''){ print"− | "; }
else{
# $new_time時間以内に更新があったら色付きで
if ($new_time && ($time - $time1) < $new_time*900) { $last_time = "$last_time"; }
print"$last_time | ";
}
}
print"
\n";
}
print"
\n";
# 他ページへのリンク表示
if($#LINES >= $max * $max_table){
print "\n";
print "
\n";
}
}
# -------------- #
# 詳細表示ページ #
# -------------- #
sub show{
&head; $head_flag=1;
if($target){ $target="_blank"; }
else{ $target="_top"; }
$id = $in{'id'};
$flag = 0;
print "\n";
open (IN,"$datapath") || &error('open');
while(){
if($mode eq 'view'){
if((split(/,/))[1] ne $in{'name'}){ next; }
}
else {
if((split(/,/))[0] != $in{'id'}){ next; }
}
# データが見つかった時は、改行をはずして全項目を読み込みましょう
$_ =~ s/\s*$//;
($num,$name,$pass,$last_time,$time1,$imgno,$host,$mail,$mailflag,$url,$imgurl,$tail,$imgw,$imgh,$imgflag,$comment,undef,undef,undef,@item) = split(/,/);
if($mode eq 'view'){ $id = $num; }
# 欠番フォーム
if(!$name){
print <
この$namaeは削除されたため、現在はデータがありません。
削除前のパスワードか管理用パスワードで、$namaeを再登録できます。
EOM
if($numlink){
my($a,$b);
$a = $id - 1; $b = $id + 1;
print "\n";
}
&foot;
exit;
}
print "\n";
print "$name |
\n";
print "
\n
\n";
if($last_time){
# コメント部分表示開始
if($comment){
print "\n";
print "\n";
print "\n";
print " |
\n";
}
}
$flag = 1;
last;
}
close (IN);
if(!$flag){ &error('notfound'); }
print<
EOM
exit;
}
# ------------ #
# デコード処理 #
# ------------ #
sub decode{
&ReadParse;
if(%in){ require "$jcodepath"; }
while (($key,$val) = each %in) {
if ($key ne "upfile") {
&jcode'convert(*val, "sjis", "", "z");
# タグ処理
# 全て許可
if($usetag == 2) {
if($in{'kill_tag'} && $key eq "comment"){
$val =~ s/</g;
$val =~ s/>/>/g;
$val =~ s/\"/"/g;
}
foreach ( @errtag ){
if ($value =~ /<$_(.|\n)*>/i) { &error("利用できないタグが含まれています"); }
}
}
else {
# コメントのみタグ許可
if($usetag == 1 && $key eq "comment"){
if($in{'kill_tag'}){
$val =~ s/</g;
$val =~ s/>/>/g;
$val =~ s/\"/"/g;
}
else{
foreach ( @errtag ){
if ($value =~ /<$_(.|\n)*>/i) { &error("利用できないタグが含まれています"); }
}
}
}
# 全て不可
else{
$val =~ s/</g;
$val =~ s/>/>/g;
$val =~ s/\"/"/g;
}
}
# 区切り文字の”,”があれば",”に変換
$val =~ s/\,/,/g;
# 改行処理
if ($key eq "comment") {
$val =~ s/\r\n/
/g;
$val =~ s/\r/
/g;
$val =~ s/\n/
/g;
}
else {
$val =~ s/\r//g;
$val =~ s/\n//g;
}
if($autolink && $key eq "comment"){
$val =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#\%]+)/$1$2<\/a>/g;
}
}
$in{$key} = $val;
}
$mode = $in{'mode'};
$sort = $in{'sort'};
$in{'url'} =~ s/^http\:\/\///;
}
# ------------ #
# アクセス制限 #
# ------------ #
sub host_check{
&gethost;
if($usedeny == 2){ $flag = 0; }
foreach (@deny) {
if(!$_){ next; }
if ($new_host =~ /$_/i) {
if($usedeny == 1){ &error("$denycom"); }
elsif($usedeny == 2){ $flag = 1; last; }
}
}
if($usedeny == 2 && !$flag){ &error("$denycom"); }
}
# ------------ #
# HTMLヘッダー #
# ------------ #
sub head{
print "Content-type: text/html; charset=Shift_JIS\n\n";
print <
$main_title
EOM
if($background){ print"\n"; }
else{ print"\n"; }
}
# -------------- #
# HTMLフッターー #
# -------------- #
sub foot{
print <
<状況> ◯:入場可\能\ △:混雑 ×:入場制限中
EOM
}
# ---------------- #
# ホスト名・IP取得 #
# ---------------- #
sub gethost{
$addr = $ENV{'REMOTE_ADDR'};
$new_host = $ENV{'REMOTE_HOST'};
if ($new_host eq '' || $new_host eq $addr) {$new_host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr;}
}
# ---------- #
# エラー処理 #
# ---------- #
sub error {
if ($_[0] ne "lock"){ unlink($lockfile); } # ロックファイル削除
if($_[0] eq "open"){ $errmes = "$datapathを開けません"; }
elsif($_[0] eq "badpass"){ $errmes = "パスワードが違います"; }
elsif($_[0] eq "no_pass"){ $errmes = "パスワードの入力は必須です"; }
elsif($_[0] eq "length"){ $errmes = "「$koumoku[$x]」は全角$lim[$x]文字以下にしてください"; }
elsif($_[0] eq "lock"){ $errmes = "同時アクセスのため、書き込みを中断しました"; }
elsif($_[0] eq "notfound"){ $errmes = "該当するデータが見つかりません"; }
else{ $errmes = "$_[0]"}
if(!$head_flag){ &head; }
print "ERROR! - $errmes
\n";
print "Back
\n";
&foot;
exit;
}