;
close(DATA);
#------------------- 管理モード --------------------------------------
&getcookie;
if($COOKIE{'admin'} eq $pass){
$main_mode = "admin";
}
elsif($FORM{'update'} eq "admin"){
if($FORM{'up_password'} ne $pass){ &error('bad_pass'); }
else {
$main_mode = "admin";
$admin_pass = $pass;
$apus_t_cookie = "admin<>$admin_pass";
print "Set-Cookie: Apus_temp=$apus_t_cookie;\n";
}
}
#------------------- 分岐 --------------------------------------------
if($FORM{'action'} eq "resist") { &resist; &main_html; }
elsif($FORM{'action'} eq "res") { &res_html; }
elsif($FORM{'action'} eq "res_resist"){ &resist; &main_html; }
elsif($FORM{'action'} eq "edit_resist"){ &edit; &main_html; }
elsif($FORM{'action'} eq "edit") {
if($FORM{'update'} eq "edit") { &edit_html; }
elsif($FORM{'update'} eq "delete") { &delete; &main_html; }
else { &main_html; }
}
elsif($FORM{'action'} eq "icon") { &icons_html; }
else { &main_html; }
#---------------------------------------------------------------------
##### メイン表示部 #####
#---------------------------------------------------------------------
sub main_html {
$mode = "main";
$title = $main_title;
#入力欄(input)のvalueを決定
$name_value = $COOKIE{'name'};
if ($COOKIE{'hp'}) { $hp_value = $COOKIE{'hp'};}
else { $hp_value = "http://";}
$email_value = $COOKIE{'email'};
$password_value = $COOKIE{'password'};
$color_flag = 0;
foreach $selected_color (@colors) {
if($COOKIE{'color'} eq $colors[$c]){
$ccheck_value[$c] = "checked";
$color_flag = 1;
}
$c++;
}
if($color_flag == 0){ $ccheck_value[0] = "checked"; }
$ico = 0;
$icon_flag = 0;
foreach $selected_icon (@icon_name) {
if($COOKIE{'icon'} eq $icon_img[$ico]){
$iselected_value[$ico] = "selected";
last;
}
$ico++;
}
#訪問者別メッセージの決定
$m = 0;
$visit_flag = 0;
if($visit_use == 1 && $COOKIE{'name'} ne ""){
foreach $_ (@visitor) {
if($_ eq $COOKIE{'name'}){
$message = $visit_message[$m];
$visit_flag = 1;
last;
}
$m++;
}
if($visit_flag == 0){
$else_visitor = $COOKIE{'name'};
&else_message;
$message = $else_message;
}
if($message ne ""){
$message = "$message
";
}
}
$action = resist;
#----- 表示部分 -----
&header;
print "
\n";
&input;
print "
HTML
#---------- NEXT、BACKボタン ----------
if ($pagemode eq "pageedit") { $action = "edit$pass";}
#管理モードだったら
else { $action = "pagemain" }
print "\n";
if($log_start > 0 || ($log_sum + 1) < $count){
print "
\n";
}
print "
\n\n\n";
print " \n";
print " \n | \n
\n
\n
\n";
&footer;
}
#---------------------------------------------------------------------
##### ログ表示 #####
#---------------------------------------------------------------------
sub log_show {
print "\n";
#普通の順序で並べる
if($res_sort == 0){
#-- 親記事を別配列に --
foreach $line (@DATA) {
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,$line);
if($resnum eq "m"){
push(@MAIN,$line);
}
}
}
#レスのついた記事を上に持ってくる
elsif($res_sort == 1){
$flag = 0;
foreach $line (@DATA) {
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,$line);
#親記事だったら・・・
if($resnum eq "m"){
foreach $temp (@TEMPS) {
if($temp eq $num){
$flag = 1;
last;
}
}
#TEMPSに入ってなかったら加える。
if($flag == 0){ push(@TEMPS,$num); }
}
#レス記事だったら・・・
else{
foreach $temp (@TEMPS) {
if($temp eq $resnum){
$flag = 1;
last;
}
}
#TEMPSに入ってなかったら加える。
if($flag == 0){ push(@TEMPS,$resnum); }
}
$flag = 0;
}
#TEMPを調べて、親記事を別配列に
foreach $temp (@TEMPS) {
foreach $line (@DATA) {
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,$line);
if($temp == $num){
push(@MAIN,$line);
last;
}
}
}
}
$count = @MAIN;
#-- レス記事のために配列を逆にする --
@DATA = reverse(@DATA);
#ページ処理
if($FORM{'page'} eq ""){
$log_start = 0; $this_page = 1;
}
else{
if($FORM{'back'} eq "BACK"){
$log_start = ($FORM{'page'} - 2) * $pagemax;
$this_page = $FORM{'page'} - 1;
}
elsif($FORM{'next'} eq "NEXT"){
$log_start = $FORM{'page'} * $pagemax;
$this_page = $FORM{'page'} + 1;
}
else{
$log_start = ($FORM{'page'} - 1) * $pagemax;
$this_page = $FORM{'page'};
}
}
$log_count = 0;
$log_sum = $log_start + $pagemax;
#親記事を表示しながらレス記事を表示
foreach $line (@MAIN) {
if($log_count >= $log_sum){ last; }
if($log_count >= $log_start){
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,$line);
&kiji1;
#ここからレス記事の処理
foreach $res_line (@DATA) {
($r_num,$r_resnum,$r_date,$r_name,$r_subject,$r_email,$r_hp,$r_comment,$r_password,$r_host,$r_color,$r_icon,$d3) = split(/\,/,$res_line);
if($r_resnum eq $num){ &kiji2; }
}
&kiji3;
}
$log_count++;
}
print "
\n";
}
#---------------------------------------------------------------------
##### 編集画面 #####
#---------------------------------------------------------------------
sub edit_html {
#アップデートしたい記事にチェックがついていなかったらエラー
if($FORM{'up_num'} eq ""){ &error(bad_update); }
#タイトル
$title ="記事編集";
#該当記事が見つかったか調べるフラグ
$edit_flag = 0;
#アクションの決定
$action = edit_resist;
$res_symbol = "";
#編集対象記事の検索とパスワード認証
foreach $line(@DATA) {
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,$line);
if ($num == $FORM{'up_num'}){
if(!&pass_check($password) && $FORM{'up_password'} ne $pass){
&error(bad_pass);
}
$target = $i;
$edit_flag = 1;
last;
}
$i++;
}
if($edit_flag == 0){ &error('bad_target'); }
#入力欄(input)のvalueを決定
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,@DATA[$target]);
$name_value = $name;
$email_value = $email;
if ($hp) { $hp_value = $hp;}
else { $hp_value = "http://";}
$subject_value = $subject;
$comment_value = $comment;
$password_value = $password;
$color_flag = 0;
foreach $selected_color (@colors) {
if($color eq $colors[$c]){
$ccheck_value[$c] = "checked";
$color_flag = 1;
}
$c++;
}
if($color_flag == 0){ $ccheck_value[0] = "checked"; }
$ico = 0;
foreach $selected_icon (@icon_name) {
if($icon eq $icon_img[$ico]){
$iselected_value[$ico] = "selected";
last;
}
$ico++;
}
#---------- タグを改行に ----------
$comment_value =~ s/
/\r/g;
#表示部分
&header;
&input;
&footer;
}
#---------------------------------------------------------------------
##### レス画面 #####
#---------------------------------------------------------------------
sub res_html {
#クッキー取得
$res_flag = 0;
#入力欄のvalueを決める
foreach $line (@DATA) {
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,$line);
if($FORM{'res_num'} eq $num){
$subject_value = "Re:$subject";
$res_flag = 1;
last;
}
}
if ($res_flag == 0){ &error('bad_target'); }
$name_value = $COOKIE{'name'};
if ($COOKIE{'hp'}) { $hp_value = $COOKIE{'hp'};}
else { $hp_value = "http://";}
$email_value = $COOKIE{'email'};
$password_value = $COOKIE{'password'};
$color_flag = 0;
foreach $selected_color (@colors) {
if($COOKIE{'color'} eq $colors[$c]){
$ccheck_value[$c] = "checked";
$color_flag = 1;
}
$c++;
}
if($color_flag == 0){ $ccheck_value[0] = "checked"; }
$ico = 0;
foreach $selected_icon (@icon_name) {
if($COOKIE{'icon'} eq $icon_img[$ico]){
$iselected_value[$ico] = "selected";
last;
}
$ico++;
}
#タイトル
if($subject eq "") { $subject = "(無題)"; }
$title = "「$subject」へのレス";
#アクションの決定
$action = res_resist;
$res_symbol = "";
#表示部分
&header;
&input;
$i = 0;
print "\n";
#親記事を探して表示
foreach $line (@DATA) {
($num,$resnum,$date,$name,$subject,$email,$hp,$comment,$password,$host,$color,$icon,$d3) = split(/\,/,$line);
if($FORM{'res_num'} eq $num){
&kiji1;
last;
}
$i++;
}
$j = 0;
#レスを探して表示
foreach $res_line (@DATA) {
($r_num,$r_resnum,$r_date,$r_name,$r_subject,$r_email,$r_hp,$r_comment,$r_password,$r_host,$r_color,$r_icon,$r_d3) = split(/\,/,$res_line);
if($r_resnum eq $num){
#配列に加える
unshift(@RES,$res_line);
}
$j++;
#レスは必ず親記事より上にあるので・・・
if($j > $i) { last; }
}
foreach $_ (@RES) {
($r_num,$r_resnum,$r_date,$r_name,$r_subject,$r_email,$r_hp,$r_comment,$r_password,$r_host,$r_color,$r_icon,$r_d3) = split(/\,/,$_);
&kiji2;
}
&kiji3;
print "
\n";
&footer;
}
#---------------------------------------------------------------------
##### アイコンのサンプル表示 #####
#---------------------------------------------------------------------
sub icons_html {
$title = "アイコン一覧";
$ico = 0;
$ico_count = @icon_name;
&header;
print "△掲示板へ戻る\n";
print "アイコン一覧
";
print "\n";
print "
\n";
#ランダムアイコン
if($iconrand_use == 1){
print "\nランダム | \n";
print "? | \n
";
}
foreach $selected_icon (@icon_name) {
print "\n$icon_name[$ico] | \n";
if($icon_img[$ico] ne ""){
print " | \n
";
}
else {
print " | \n";
}
$ico++;
}
print "
\n";
&footer;
}
#---------------------------------------------------------------------
##### 入力欄 #####
#---------------------------------------------------------------------
sub input {
if($mode eq "main" && $sub_title ne ""){ $sub_title = "$sub_title
"; }
else { $sub_title = ""; }
if($title_img ne "" && $mode eq "main"){
$title = "";
}
print<<"HTML";
HTML
}
#---------------------------------------------------------------------
##### ヘッダー #####
#---------------------------------------------------------------------
sub header {
print "Content-type: text/html\n\n";
print<<"HTML";
$title
$style
HTML
}
#---------------------------------------------------------------------
##### フッター #####
#---------------------------------------------------------------------
sub footer {
#MIDIをならす
if($midi ne ""){
print<<"HTML";
HTML
}
print<<"HTML";
Copyright(C)2002 ThinkQuest@Japan Team
40457 all rights reserved | Legal
notice