#!/usr/bin/perl
#-*- mode: Text; -*- Time-stamp: "01/05/05 07:24:23 levin"
$|=1;
$ver = 'PETIT v4.5';
require './jcode.pl';
require './sub.cgi';
require '../kickit.cgi';
# メイン処理
&get_time; # 時間を取得
&ipget; # アクセスログを記録
&code; # 投稿コード生成
&decode;
#if ($mode eq "howto") { &howto; }
#if ($mode eq "find") { &find; }
if ($mode eq "usr_del") { &usr_del; }
if ($mode eq "msg_del") { &msg_del; }
if ($mode eq "msg") { ®ist; }
if ($mode eq "res_msg") { &res_msg; }
if ($mode eq "admin") { &admin; }
if ($mode eq "admin_del") { &admin_del; }
if ($mode eq "res") { &allres; }
&html_log;
#--------------#
# 記事表示部 #
#--------------#
sub html_log {
&getstart;
print <<"EOM";
ここはジャニオタのHPを潰すためのBBSです
\n"; foreach ($page .. $page_end) { ($fdate,$fccc,$num,$k,$date,$name,$email,$sbj, $com,$url,$host,$pwd,$color) = split(/<>/, $new[$_]); if (!$sbj) { $sbj = "Untitled"; } print "[$num]: $sbj \n"; } print "▼ 一番下へ行く \n"; print " |
\n"; } # 次頁処理 if ($page_end ne $end_data) { print " | \n"; } print " |
ワード検索 |
---|
|
\n"; print "
\n"; print "
$com
\n";
}
&footer;
exit;
}
#--------------#
# 日時の取得 #
#--------------#
sub get_time {
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday,$dmy,$dmy) = localtime(time);
$year += 1900;
$mon++;
if ($mon < 10) { $mon = "0$mon"; }
if ($mday < 10) { $mday = "0$mday"; }
if ($hour < 10) { $hour = "0$hour"; }
if ($min < 10) { $min = "0$min"; }
if ($sec < 10) { $sec = "0$sec"; }
# 日時のフォーマット
if ($date_type && $FORM{'resno'} eq "") {
$youbi = ('日','月','火','水','木','金','土') [$wday];
$date = "$year年$mon月$mday日 ($youbi) $hour時$min分$sec秒";
} else {
$youbi = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') [$wday];
$date = "$year/$mon/$mday($youbi) $hour\:$min\:$sec";
}
}
#------------------------------------#
# ブラウザを判断しフォーム幅を調整 #
#------------------------------------#
sub get_bros {
# ブラウザ名を取得
$agent = $hua;
if ($agent =~ /MSIE 3/i) {
$nam_wid = 30;
$subj_wid = 40;
$com_wid = 65;
$url_wid = 48;
$nam_wid2 = 15;
} elsif ($agent =~ /MSIE 4/i || $agent =~ /MSIE 5/i) {
$nam_wid = 30;
$subj_wid = 40;
$com_wid = 65;
$url_wid = 78;
$nam_wid2 = 15;
} else {
$nam_wid = 20;
$subj_wid = 25;
$com_wid = 56;
$url_wid = 50;
$nam_wid2 = 10;
}
}
#------------#
# 削除画面 #
#------------#
sub msg_del {
$ad_flag = 0; $ad_check = 0 ;
if ($FORM{'action'} eq 'admin') { $ad_flag = 1; }
if ($FORM{'pass'} eq "$pass" || $FORM{'pass'} eq "$pass2") { $ad_check = 1; }
if ($ad_flag) { unless ($ad_check) { &error("パスワードが違います"); } }
open(DB,$logfile) || &error("Can't open $logfile");
@lines = \n";
print " \n";
&footer;
exit;
}
## --- ユーザ記事削除処理
sub usr_del {
if ($FORM{'del_key'} eq "") { &error("削除キーが入力モレです。"); }
if ($FORM{'del'} eq "") { &error("ラジオボタンの選択がありません。"); }
# ロック開始
if ($lockkey == 1) { &lock1; }
elsif ($lockkey == 2) { &lock2; }
# ログを読み込む
open(DB,"$logfile") || &error("Can't open $logfile");
@lines = \(v2.5以前のログの場合は変換の必要があります\)<\/small>");
}
shift(@lines);
## 削除処理
foreach $line (@lines) {
$dflag=0;
($fdate,$fccc,$num,$k,$dt,$name,$email,$sub,$com,$url,$host,$pw) = split(/<>/,$line);
foreach $del (@delete) {
if ($del eq "$dt") {
$dflag = 1;
$del_num = $num;
if ($k eq '') { $oyaflag=1; }
} elsif ($oyaflag && $del_num eq "$k") {
$dflag = 1;
}
}
if ($dflag == 0) { push(@new,$line); }
elsif ($dflag == 1)
{ push(@new,"$fdate<>$fccc<>$num<>$k<>$dt<>$name<>$email<>$sub<>削除<>$url<>$host<>削除<>$color<>$com\n"); }
}
# 親記事NOを付加
unshift(@new,$oya);
## ログを更新 ##
open(DB,">$logfile") || &error("Can't write $logfile");
print DB @new;
close(DB);
# ロック解除
if (-e $lockfile) { unlink($lockfile); }
# 削除画面にもどる
&msg_del;
}
## --- 管理者入室画面
sub admin {
&header;
print "
\n";
print "\n";
print "コメント削除画面 \n";
print " \n";
if ($FORM{'action'} eq '') {
print "■投稿時に記入した「削除キー」により、記事を削除します。
\n";
}
print "■削除したい記事のチェックボックスにチェックを入れ、下記フォームに「削除キー」を入力してください。
\n";
print "■親記事を削除する場合、そのレスメッセージも同時に消滅してしまうことになりますので、ご注意ください。
\n";
print "\n";
# 改頁処理
$next_line = $page_end + 1;
$back_line = $page - $pagelog;
# 前頁処理
if ($back_line >= 0) {
print " \n";
}
# 次頁処理
if ($page_end ne $end_data) {
print " \n";
}
print " パスワードを入力してください
\n";
print "