#!/usr/bin/perl #管理パスワードで管理ページに入る #管理ページでページのレイアウトと削除が可能 # 管理用パスワード $pass = '0123'; $logfile = "./bbs.log"; { #$ENV{'REQUEST_METHOD'}='GET'; #$ENV{'QUERY_STRING'}='pass=0133'; #formデータの解析 %in={}; &decode(); if ($in{'pass'} eq "") { &admin();} else {&delete();} } 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); $in{$name} = $value; if ($name eq 'del') { push(@DEL,$value); } #print "name=$name value=$in{$name}\n\n" } } # HTMLヘッダ # sub header { $head_flag = 1; print "Content-type: text/html\n\n"; print <<"EOM"; $title EOM } #--------------# # エラー処理 # sub error { # if ($lockkey) { &unlock; } &header if (!$head_flag); print "

ERROR !

\n"; print "

$_[0]\n"; print "


\n"; print "\n"; exit; } # 管理ボタン処理 # sub admin { &header; print "

パスワードを入力して下さい

\n"; print "
\n"; print "\n"; print ""; print "
\n"; print "
\n"; print "\n"; } sub delete{ if ($in{'pass'} ne "$pass") { &error("パスワードが違います"); } &header; print "[掲示板に戻る]\n"; print "
\n"; print "管理モード\n"; print "
\n"; # 削除処理 if ($DEL[0]) { # 削除情報をマッチングし更新 open(IN,"$logfile") || &error("Open Error : $logfile"); @lines = ; close(IN); @new=(); foreach (@lines) { $flag=0; ($no,$date) = split(/<>/); foreach $del (@DEL) { if ($no eq "$del") { $flag=1; last; } } if ($flag == 0) { push(@new,$_); } } open(OUT,">$logfile") || &error("Write Error : $logfile"); print OUT @new; close(OUT); } # 削除画面を表示 print "
\n"; print "\n"; print "\n"; print "

削除したい記事のチェックボックスにチェックを入れ、削除ボタンを押して下さい。\n"; print "

\n"; print ""; print "\n"; open(IN,"$logfile") || &error("Open Error : $logfile"); while () { ($no,$date,$name,$mail,$sub,$com,$url,$host,$pw) = split(/<>/); if ($mail) { $name="$name"; } $com =~ s/
//ig; $com =~ s//>/g; if (length($com) > 60) { $com = substr($com,0,58); $com .= "..."; } print "
"; print ""; print "\n"; } close(IN); print "
削除記事No投稿日題名投稿者コメントホスト名
$no$date$sub$name$com$host
\n"; print "

"; print "

\n"; print "
\n"; print "\n"; }