#!/usr/local/bin/perl ########################### ###### ライブラリの場所 ######### ########################### require './jcode.pl'; ########################### ###### このCGIの場所 ######### ########################### $cgi="./bbs_gaigo.cgi"; ########################### ###### ファイルの場所 ######### ########################### $flag = "0"; $file = "./date_gaigo.txt"; $kekka = ""; $page = 5; ########################### ######設定ここまで######## ########################### 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); $name2 = $name; $value2 = $value; $FORM2{$name} = $value; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; &jcode'convert(*value,'euc'); $FORM{$name} = $value; } $u_name = $FORM{'u_name'}; &jcode'convert(*u_name,'sjis'); $u_mail = $FORM{'u_mail'}; &jcode'convert(*u_mail,'sjis'); $u_title = $FORM{'u_title'}; &jcode'convert(*u_title,'sjis'); $u_body = $FORM{'u_body'}; &jcode'convert(*u_body,'sjis'); $action = $FORM{'action'}; &jcode'convert(*action,'sjis'); $pass = $FORM{'pass'}; &jcode'convert(*pass,'sjis'); if($action eq kaki){ &kakikomi; }else{ &hajime; } sub kakikomi{ if($u_name eq ""){ &error; exit(0); } if($u_title eq ""){ &error; exit(0); } if($u_body eq ""){ &error; exit(0); } if($pass ne ""){ if($pass eq "studyabroad"){ $id="ok"; }else{ &error2; exit(0); } } $u_body =~ s//>/g; $u_body =~ s/\n\n/
/g; $u_body =~ s/\n/
/g; $u_body =~ s/\t/
/g; $u_body =~ s/\r/
/g; $u_body =~ s/

/
/g; ($g_sec,$g_min,$g_hour,$g_mday,$g_mon,$g_year,$g_wday,$g_yday,$g_isdst) = localtime(time); $g_mon++; $g_year=$g_year+1900; $g_youbi = ('sun','mon','tue','wed','thu','fry','sat') [$g_wday]; $u_time = "$g_year-$g_mon-$g_mday/$g_hour:$g_min($g_youbi)"; $all="$id,$u_name,$u_title,$u_mail,$u_body,$u_time\n"; &jcode'convert(*all,'euc'); $uselock=1; open(FILE, "+<$file") || &ferror(); @allallall = ; close(FILE); unshift(@allallall,"$all"); if (!open(FILE, ">$file")) { $msg = '[not found]'; &error_page; exit(0); } if (!&lock_file(FILE)) { $msg = '[lock error]'; &error_page; exit(0); } print FILE @allallall; &unlock_file(FILE); close(FILE); &hajime; } sub hajime{ print "Content-type: text/html\n"; print "\n"; $msg = <<"end_msg"; 掲示板








留学中の声


投稿者名・題名・内容は必須項目です。
投稿者
 
メール
 
題 名
 
内 容
 
管理者
 
 


end_msg print"$msg"; if (!open(IN,"$file")) { &error('データベースをメンテナンス中です。しばらくお待ちください。'); } @BASE = ; close(IN); if ($FORM{'FF'} eq '') { $FF = 0; } else { $FF = $FORM{'FF'}; } $TO = $FF + $page - 1; if ($TO > $#BASE) { $TO = $#BASE; } $hit = 0; $next_num = ''; foreach $num ($FF .. $#BASE) { $data = $data2 = $BASE[$num]; &jcode'convert(*data,'euc'); $data =~ s/"//g; $data =~ s/\n//g; $data =~ s/\t//g; $data =~ s/\r//g; ($id,$namae,$title,$mail,$body,$jikan) = split(/\,/,$data); if($action eq "abroad"){ if($id ne ""){;}else{next;} }else{ if($namae ne ""){;}else{next;} } # 検索終了処理 if ($hit == $page) { $next_num = $num; last; } else { push(@NEW,$data2); $hit++; } } ############################結果が見つからないとき############################ if (!@NEW) { $msg_e = <<"end_msg"; _検索結果_



メッセージが登録されていません。

end_msg print"$msg_e"; exit; } ############################結果があった場合############################ else { foreach $data (@NEW) { ($id,$namae,$title,$mail,$body,$jikan) = split(/\,/,$data); &jcode'convert(*id,'sjis'); &jcode'convert(*namae,'sjis'); &jcode'convert(*title,'sjis'); &jcode'convert(*mail,'sjis'); &jcode'convert(*body,'sjis'); &jcode'convert(*jikan,'sjis'); $jikan =~ s/\n\n//g; $jikan =~ s/\n//g; $jikan =~ s/\t//g; $jikan =~ s/\r//g; if($mail ne ''){ $namae2="$namae"; }else{ $namae2="$namae"; } $msg_e = <<"end_msg";
$title

投稿者:$namae2  $jikan
$body





end_msg print"$msg_e"; } } $msg_f = <<"end_msg";




end_msg print"$msg_f"; if ($next_num ne '') { while (($key,$val) = each %FORM2) { if ($key ne 'FF') { $buf = "$buf&$key=$val"; } } if($next_num > 5){ print "
前の$page件 - 次の$page件
\n"; print "

"; }else{ print "
次の$page件
\n"; print "

"; } }else{ print "

"; } } sub error{ print "Content-type: text/html\n"; print "\n"; $msg_e = <<"end_msg"; _error!!_



ご記入に漏れがあります。
投稿者名・題名・内容は必須項目です。

前ページに戻る
end_msg print"$msg_e"; } sub error2{ print "Content-type: text/html\n"; print "\n"; $msg_e = <<"end_msg"; _error!!_



管理者パスワードが違います。

前ページに戻る
end_msg print"$msg_e"; } sub lock_file { local(*FILE) = @_; if ($uselock) { eval("flock(FILE, 2)"); # 2=LOCK_EX if ($@) { return 0; } } return 1; } sub unlock_file { local(*FILE) = @_; if ($uselock) { eval("flock(FILE, 8)"); # 8=LOCK_UN } }