#!/usr/local/bin/perl

#******************************************************************************
#upboard.cgi - Upload Board Ver.1.12
#
#Version   	:1.12
#modified  	:2000/10/22
#Copyright 	:The Room
#E-Mail		:dream@lib.net
#URL		:http://dream.lib.net/room/
#
#UP BOARD  (01/02/15)              
# Edit by Moerin [Mo-Mo/Material]    
# Mail: moe_moe@d9.dion.ne.jp      
# Home: http://twin917.vis.ne.jp/  
#
#これはフリー素材です。
#転載・商用目的の利用の際には、メールをお願いします。
#御利用の際は、The　RoomさんとMo−Mo/Materialの利用規定をお読み
#ください。
#******************************************************************************
#1行目のperlのディレクトリ指定は、サーバによって異なります。
#詳しくは、管理者にお聞きください。
#******************************************************************************
#
# 冒頭の設定が終了したら、スクリプト文末を見てください。
# Help画面を表示していますので、
# 必要に応じて変更してください。
#
#******************************************************************************

#基本設定

# jcode.pl の位置
$jcode="./jcode.pl";

# ログファイルの位置
$logfile="./log.dat";

#ログの最大数
$logmax = 380;

#1ページに表示する親記事数
$pagemax = 8;

#入力が無かった時に設定する名前。
#何もいれないと、名前入力が必須になります。
$newname = "";

#入力が無かった時に設定する題名。
#何もいれないと、題名入力が必須になります。
$newsubject = "私の雲";

# 書きこみの色
#
# 書きこみ時に「Write Color」で選択する色です。
$wclist[0] = "#666666";
$wclist[1] = "#f08080";
$wclist[2] = "#ff9900";
$wclist[3] = "#4a9d02";
$wclist[4] = "#4682b4";

$font_size = "10pt";

# 背景色
#
# 書きこみ時の「back color」で選択する色です。
# $bclist が背景色、$lclistが枠の色、
# $sclist1 がボタン・テキストボックスの枠の色、
# $sclist2 がボタン・テキストボックスの枠の中の色、となっています。
# 例えば、背景色で 2番目の色を選択したら、
# それに伴って他の色も変わります。
#
# ＊下の初期設定では、背景色は全て白となっています。
# ＊また、背景はそんなに極端に変更するものでもないと思うので、
# ＊実際の選択時には、 $lclist で設定した色が表示されます。
#入力フォーム・削除フォーム等の枠の色
$bordercolor="#ffffff";

#入力フォーム・削除フォーム等の中の色
$incolor="#ffffff";

#******************************************************************************

#タイトル
$title = "みんなの撮った雲 -Cloud Collector-";

#BODYタグ
$body = '<body background=bg.gif bgcolor=#ffffff text=#000000 link=#000000 vlink=#000000 alink=#000000 bgproperties=fixed onLoad="preLoadJi71()">';

#ページ上部に表示するタイトル
$pagetop = '<br><br><div align=center><font style=font-size:15pt ;color=#666666>* みんなの撮った雲 *</font></div><br><br><div align="center">雲の大辞典をみんなの撮った雲の写真で作ってゆきましょう.</div>';

#スタイルシート
# .input は親記事入力フォーム・削除入力フォームのテキストボックス、
# .button はなんらかのボタンのスタイルシート指定となっています。
$stylesheet = <<EOD;
<style type="text/css">
<!--
body{color : $text_color; font-size : $font_size; background : white url(../../image/back_circle.gif) repeat-y;}
td{color : $text_color; font-size : $font_size; }
span{color:#ff0000;font-size:10pt;}
a:link	{color : $link_color; text-decoration : none; }
a:visited	{color : $vlink_color; text-decoration : none; }
a:active	{color : $alink_color; text-decoration : none; }
a:hover	{color : $hlink_color; text-decoration : underline overline blink; background-color : $hlink_bgcolor;
}
input,textarea,select{border-left:1px solid lightyellow;
border-right:2px solid lightyellow;
border-top:1px solid lightyellow;
border-bottom:2px solid lightyellow;
background-color : powderblue; color : #666666;}

.noborder { border-left:0px solid $input_border;
border-right:0px solid $input_border;
border-top:0px solid $input_border;
border-bottom:0px solid $input_border;
background-color : $table_bgcolor ;color : $input_color; }

-->
</style><link rel="stylesheet" href="../../common/css_menu_l.css" type="text/css">
<link rel="stylesheet" href="../../common/css_basic.css" type="text/css">
<Script Language="JavaScript"src="../../common/menu_l.js">
</Script>
<style type=text/css>
<!--
.BA {border: 1 solid #000000}
.TA {border: 1 solid skyblue}
.TB {border: 2 solid #000000}
-->
</style>

EOD

#back のリンクの戻り先（設定しないとリンクは表示されません）
$homeback = "http://contest.thinkquest.jp/tqj2001/40457/cloud/cloud_index.html";

#******************************************************************************
#動作設定

$linktarget="_self";	# 投稿者のホームページへのリンクのターゲット

$ipindicate=1;		# ソースにIPを表示するなら1を。

$resmove = 1;		#レスがついた記事を一番上に移動するなら1を。

@permittag=("a","b","font");
			#使用を許可するタグ。
			#全て不許可の場合は、 @permittag=();

$autolink=1;		#URLが書かれたら自動的にリンクを貼る場合は1を

$referercheck=1;	#別ページからの投稿を禁止するなら1を。

$doubleerror=1;		#二重投稿を禁止するなら1を。

$scripturl="http://contest.thinkquest.jp/tqj2001/40457/cgi-bin/upboard/upboard.cgi";
			#スクリプトを置くURL（http://〜の絶対パス）

$adminpass = "isama";#管理用パスワード

#******************************************************************************
#アップロード設定

#管理人のみがアップできるようにするなら1を。
$adminimage = 0;

#ファイルをアップするディレクトリ
# niftyやfreeweb等、HTMLとCGIのサーバが異なる場合には、
# /homepage/updir のようにサーバ内絶対パス指定してください。
$updir="../../updir";

#ファイルをアップするディレクトリへの http://〜 からの絶対パス
# niftyやfreeweb等、HTMLとCGIのサーバが異なる場合のみ設定が必要です。
$upurl = "";

#アップを許可するファイルの拡張子
@permitup=("gif","jpeg","jpg","png","bmp");

#最大アップサイズ（バイト単位）
$maxsize=1024000;

# 表示タイプ
# 0 そのまま表示（画像向き）
# 1 サムネイル表示（画像向き）
# 2 リンク表示（音楽向き・その他ファイル向き）
# 3 小窓を開く（音楽・その他向き・要JavaScript）
# 4 小窓にEMBEDタグを表示して、音楽や動画を再生する
# 5 自動判別（画像ならサムネイル・それ以外はリンク）
$imagetype = 5;

#表示タイプで 1 を設定した時のサムネイルの大きさ
@thumbnail = (100,100);	

#サムネイルの大きさを画像サイズに合わせて調整するなら1を。
# jpg gif png bmp(Windowsフォーマット)のみ対応しています。
$autothumb = 1;

#上記で1を設定した場合の、サムネイルの長い方の辺の長さを設定します。
#
#例えば 200x150 の画像をアップした場合、
#長い200の方がここで設定する100に変更され、
#同じ倍率で150を75として表示します。
#
#画像サイズの調整ができない画像タイプの場合は、
# @thumbnail で指定した大きさで表示されます。
#
#ただし、幅・高さともに指定した値よりも小さい場合は、
#原寸で表示します。
$autothumbsize = 150;

#表示タイプで 1/2 を設定した時のリンクターゲット
$imagetarget = "_blank";

#表示タイプで 3/4 を設定した時のウィンドウの大きさ
@windowsize = (150,40);

#拡張子補完機能を使う場合は1を。
#拡張子のついていないファイルを自動的に判別します。
$exsthelp = 1;

#******************************************************************************
#これ以下は基本的に設定不要です。
#MIMEエンコードが分かる方で、特殊なファイルをアップする方だけご覧下さい。

# 表示タイプで 4 を指定した時のMIME指定
# "拡張子" => "type" で指定する。
# 各々の区切りには ,（コンマ）を使う。
%embedtype = (
	"mid" => "audio/mid",
	"midi" => "audio/midi",
	"aif" => "audio/aiff",
	"au" => "audio/basic",
	"mp3" => "audio/mpeg",
	"ra" => "audio/vnd.rn-realaudio",
	"ram" => "audio/x-pn-realaudio",
	"wav" => "audio/wav",
	"avi" => "video/avi",
	"mpeg" => "video/mpeg",
	"mpa" => "video/mpg",
	"mov" => "video/quicktime",
	"rv" => "video/vnd.rn-realvideo"
	);

#表示タイプで 5 を指定した時、画像としてサムネイルを表示する拡張子
%imagetype = (	"gif" => 1,
	 	"jpg" => 1,
		"jpeg" => 1,
		"png" => 1,
		"bmp" => 1,
		"dib" => 1,
		"xbm" => 1,
		"tif" => 1
		);

#拡張子補完用データ
#
# 以下の拡張子は追加してもうまく判断できません。
# shtml/phtml … htmlと同じMIMEであるため。
#                これらは html の設定を変更することで対処できますが、
#                shtml・html等は同一のタイプと判断されるため、一種類しか判別できません。
# exe等 … MIMEが application/octet-stream であるものです。
#          lzh の設定をカットして、exeを追加すると対処できますが、
#          サーバによっては危険なので、圧縮してアップしてもらうようにしてください。

@exsttype = (
	["lzh","application/octet-stream"],
	["txt","text/plain"],
	["pdf","application/pdf"],

	["html","text/html"],
	["hdml","text/hdml"],

	["jpg","image/jpg"],
	["png","image/png"],
	["gif","image/gif"],
	["bmp","image/bmp"],
	["xbm","image/x-xbitmap"],
	["tif","image/tiff"],

	["zip","application/zip"],
	["zip","application/x-zip"],
	["zip","application/x-zip-compressed"],
	["gtar","application/x-gtar"],
	["shar","application/x-shar"],
	["tar","application/x-tar"],
	["hqx","application/mac-binhex40"],

	["mid","audio/mid"],
	["aif","audio/aiff"],
	["au","audio/basic"],
	["mp3","audio/mpeg"],
	["ra","audio/vnd.rn-realaudio"],
	["ram","audio/x-pn-realaudio"],
	["wav","audio/wav"],

	["avi","video/avi"],
	["mpeg","video/mpeg"],
	["mpa","video/mpg"],
	["mov","video/quicktime"],
	["rv","video/vnd.rn-realvideo"]
	);

#******************************************************************************
require $jcode;
$ENV{'TZ'}="JST-9";
srand;


$buffer = "";
$qs = "";
$a1 = $ENV{'CONTENT_LENGTH'};
binmode(STDIN);
while ($a1) {
  $a1 -= sysread(STDIN, $buffer, $a1);
  $qs .= $buffer;
}

$cl = $ENV{"CONTENT_LENGTH"};
if( $cl > 0 ){
	read(STDIN, $qs2, $cl );
}else{
	$qs2 = $ENV{"QUERY_STRING"};
	}
if ($qs ne ""){
	$del = substr($qs,0,index($qs,"\r\n"));
	@y1=split(/$del/,$qs);
	shift(@y1);

	for (0 .. $#y1){
		if ($y1[$_] =~ /Content-Disposition: ([^;]*); name="([^"]*)"; filename="([^"]*)/i){
			$a2=$3;
			$upfilename = $1 if $a2 =~ /([^\\\/]+$)/;
			$upfiletype = $1 if $y1[$_] =~ /Content-Type: ([^\r|\n]*)/i;
			$a1=index($y1[$_],"\r\n\r\n");
			$upfile=substr($y1[$_],$a1+4,length($y1[$_])-$a1-6);
			$upfilename = lc($upfilename);
			}
		elsif ($y1[$_] =~/Content-Disposition: ([^;]*); name="([^"]*)"/i){
			$key = $2;
			$a1=index($y1[$_],"\r\n\r\n");
			$text=substr($y1[$_],$a1+4,length($y1[$_])-$a1-6);
			$text =~ s/\r\n/\n/g;

			&jcode::convert(\$text,'sjis');
			$act = $text if $key eq 'act';
			$name = $text if $key eq 'name';
			$email = $text if $key eq 'email';
			$siteurl = $text if $key eq 'siteurl';
			$subject = $text if $key eq 'subject';
			$msg = $text if $key eq 'msg';
			$delkey = $text if $key eq 'delkey';
			$wrcolor = $text if $key eq 'wrcolor';
			$bgcolor = $text if $key eq 'bgcolor';

			$page = $text if $key eq 'page';
			$pass = $text if $key eq 'pass';
			$num = $text if $key eq 'num';
			$del = $text if $key eq 'del';

			}
		}
	}else{
	@contents = split(/&/,$qs2);
	foreach $i (0 .. $#contents) {
		local($key,$text)= split(/=/,$contents[$i]);
		$text =~ s/\+/ /g;
		$text =~ s/%(..)/pack("c",hex($1))/ge;
		$text =~ s/[\r\n]//g; 

		&jcode::convert(\$text,"sjis");

		$act = $text if $key eq 'act';
		$name = $text if $key eq 'name';
		$email = $text if $key eq 'email';
		$siteurl = $text if $key eq 'siteurl';
		$subject = $text if $key eq 'subject';
		$msg = $text if $key eq 'msg';
		$delkey = $text if $key eq 'delkey';
		$wrcolor = $text if $key eq 'wrcolor';
		$bgcolor = $text if $key eq 'bgcolor';

		$page = $text if $key eq 'page';
		$pass = $text if $key eq 'pass';
		$num = $text if $key eq 'num';

		$filename = $text if $key eq 'filename';
		$filetype = $text if $key eq 'filetype';
		}
	}

$page||=0;

#環境変数取得
$ip= "$ENV{'REMOTE_ADDR'}";
$host = gethostbyaddr(pack("C4", split(/\./, $ip)), 2);
$host||=$ip;
$referer=$ENV{'HTTP_REFERER'};

$name =~ s/</&lt;/g;
$name =~ s/>/&gt;/g;
$email =~ s/</&lt;/g;
$email =~ s/>/&gt;/g;
$siteurl =~ s/</&lt;/g;
$siteurl =~ s/>/&gt;/g;


#クッキー取得
for $xx (split(/; */, $ENV{'HTTP_COOKIE'})) {
	($chname, $value) = split(/=/, $xx);
	$value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
	$cookie{$chname} = $value;
	}
$name||=$cookie{'name'};
$email||=$cookie{'email'};
$siteurl||=$cookie{'siteurl'};
$delkey||=$cookie{'delkey'};
$wrcolor=$cookie{'wrcolor'} if $wrcolor eq "";
$bgcolor=$cookie{'bgcolor'} if $bgcolor eq "";

$name||=$newname;
$subject||=$newsubject;
$wrcolor = 0 if $wclist[$wrcolor] eq "";
$bgcolor = 0 if $bclist[$bgcolor] eq "";

print "Set-Cookie:name=$name; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Set-Cookie:email=$email; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Set-Cookie:siteurl=$siteurl; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Set-Cookie:delkey=$delkey; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Set-Cookie:wrcolor=$wrcolor; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
print "Set-Cookie:bgcolor=$bgcolor; expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";

$readflag = 0;

if ($adminimage == 1){
	$imageflag = 0;
	if ($act eq "admin"){
		if ($pass ne $adminpass){
			&error("パスワードが間違っています。");
			}else{
			$imageflag = 1;
			}
		}
	}else{
	$imageflag = 1;
	}

$html_wrcolor="";
for (0 .. $#wclist){
	if ($wrcolor == $_){$a1=" checked";}else{$a1="";}
	$html_wrcolor.="<input type=\"radio\" name=\"wrcolor\" value=\"$_\"$a1><font color=\"$wclist[$_]\"><b>■</b></font>\n";
	}

if ($act eq "help"){&help;}
elsif ($act eq "play"){&play;}
elsif ($act eq "del"){&del;}
elsif ($act eq "write"){&write;}
elsif ($act eq "res"){&res;}

&hphead;

if ($imageflag == 1){
	$a1="<tr><td nowrap>File</td><td><input type=\"file\" name=\"img\" value=\"\" size=40 class=\"input\"></td></tr>";
	}else{
	$a1="";
	}


#入力フォーム表示
print <<EOD;
<form method="post" enctype="multipart/form-data" action="./upboard.cgi">
<table border=0 bgcolor=#ffffff width=400 cellpadding=0 cellspacing=0 align=center class=TA>
<tr>
<td align=center><table border=0 bgcolor=#ffffff width=350 cellpadding=0 cellspacing=0 align=center >
<tr>
<td align=center>

<table border=0 width=342>
<tr><td bgcolor=$incolor>
<table width=342>
<tr>
<td align=right>
Name <input type="text" name="name" value="$name" size=20 class="input"></td>
</tr>
<tr>
<td align=right>
E-mail <input type="text" name="email" value="$email" size=20 class="input"></td>
</tr>
<tr>
<td align=right>
HP <input type="text" name="siteurl" value="$siteurl" size=20 class="input"></td>
</tr>
</table>
<div align=left>
<input type="text" name="subject" value="" size=20 class="input">Title <br>
Message<br>
<textarea name="msg" cols=30 rows=3 class="input"></textarea><br>
<table>
$a1 
<tr>
<td nowrap>Pass</td>
<td><input type="password" name="delkey" value="$delkey" size=9 maxlength=8 class="input"></td>
</tr>
<tr>
<td nowrap>COLOR</td>
<td>
$html_wrcolor
</td></tr>
<tr>
<td>
EOD
for (0 .. $#bclist){
	if ($bgcolor == $_){$a1=" checked";}else{$a1="";}
	print "<input type=\"radio\" name=\"bgcolor\" value=\"$_\"$a1><font color=\"$lclist[$_]\">■</font>\n";
	}

print <<EOD;
</td></tr>
</table>
<br>
<div align=center>
<input type="submit" value="Write" class=" input"style="background:#dcdcdc;color:#000000">
&nbsp;<input type="reset" value="Reset" class="input" style="background:#dcdcdc;color:#000000">
<input type="hidden" name="act" value="write" style="background:#dcdcdc;color:#000000">
</div>
</form>
<div align=left><form method="post" enctype="multipart/form-data" action="./upboard.cgi">
<input type="submit" value="Help?" class="input" style="background:#dcdcdc;color:#000000">
<input type="hidden" name="act" value="help">
<br>

<table bgcolor="AAFFFF">
<tr><td>
<font color="#4488bb">*管理者より*</font><br>
<a name="attention01" style="font-size:8pt">
この掲示板は雲の写真の投稿していただいたり、その写真に対する感想を書き込んでいただいたりするための掲示板です。 落書きをする場所ではありません。また、この掲示板上で会話のやり取りをするなどの行為は慎んでください。<br>
この掲示板に不適切と思われる書き込み、見る人が不愉快になるような書き込みは、編集・削除いたします。
</a>
<br><br>
<font color="#4488bb"><b>*お願い*</b></font><br>
<a name="attention02" style="font-size:9pt"><b>
投稿された写真にコメントを書き込む場合は、各スレッドの一番下にあるフォームを利用してください。
一番先頭にあるフォームに書き込むと、独立したスレッドになってしまいます。
独立した書き込みは、どの写真に対するコメントか分からないので、管理者の方で削除いたします。ご了承ください。
</b></a>
</td></tr>
</table>

</div>

</td></form></tr>
</table>

</td></tr>
</table></td></tr>
</table>
<br><br>
EOD
&art;
#ページリンク表示
print "<br><div align=center>\n";
if ($page != 0){
	$a1=$page-1;
	print "<a href=\"./upboard.cgi?page=$a1\">&lt;&lt;Prev Page</a>\n";
	}
if ($wrflag == 2){
	if ($page != 0){print "&nbsp;&nbsp;&nbsp;";}
	$a1=$page+1;
	print "<a href=\"./upboard.cgi?page=$a1\">Next Page&gt;&gt;</a>\n";
	}

if ($homeback ne ""){print "<br><br><a href=\"$homeback\">&lt;&lt;雲のページへ戻る</a><br>";}
print "</div>\n";

# 削除フォーム表示
print <<EOD;
<br>
<table border=0 align=center cellpadding=0 cellspacing=0 class="TA">
<tr>
<td bgcolor=$bordercolor>
<table border=0>
<tr>
<td bgcolor=$incolor>
<form method="post" enctype="multipart/form-data" action="./upboard.cgi">

Number <input type="text" name="num" value="" size=4 class="TA" style="background:#dcdcdc;color:#000000"> 
Delkey <input type="password" name="pass" value="" size=8 maxlength=8 class="TA"style="background:#dcdcdc;color:#000000">
<div align=center>
article<input type="radio" name="del" value="0" checked class="TA"style="background:#dcdcdc;color:#000000">
<input type="submit" value="Delete" class="TA"style="background:#dcdcdc;color:#000000">
<input type="radio" name="del" value="1" class="TA"style="background:#dcdcdc;color:#000000">file only
<input type="hidden" name="act" value="del"style="background:#dcdcdc;color:#000000">
</div>
</td>
</form>

</tr>
</table>
</td>
</tr>
</table>
<br>
EOD

&hpfoot;

#******************************************************************************
sub art{
#記事表示

if ($upurl ne ""){$a13=$upurl;}else{$a13=$updir;}

if ($readflag == 0){
	open (IN,"$logfile");
	eval{flock(IN,1)};
	@y1=<IN>;
	close (IN);
	}
$ct=0;
$bfart=-1;
$resflag = 0;
$wrflag = 0;

foreach $a1(@y1){
	@y2=split(/<>/,$a1);
	if ($y2[1] == 0){
		$ct++;
		if (($ct >= $page*$pagemax+1) && ($ct <= ($page+1)*$pagemax)){
			$wrflag=1;
			}
		elsif ($wrflag){
			$wrflag=2;
			}

		if ($wrflag == 1) {
		#親記事読みこみ
		if ($bfart != -1){
			#既に親記事を表示していたら、前の親記事を閉じる
			if ($resflag != 0){
				#レス記事を表示している場合、そのテーブルも閉じる
				print "</table></td></tr>\n";
				}
print <<EOD;
<tr>
<form method="post" enctype="multipart/form-data" action="./upboard.cgi">
<td bgcolor=white>

<table width=100% cellpadding=0 >
<tr>
<td><font color=$wrlist[$maincolor]>name</font></td>
<td><input type="text" name="name" value="$name" size=10 style="$style1"class="input"></td>
<td><font color=$wrlist[$maincolor]>msg</font> <input type="text" name="msg" value="" size=30 style="$style1"class="input">
<input type="submit" value="Write" style="$style2"class="TA"style="background:#dcdcdc;color:#000000">
<input type="hidden" name="num" value="$bfart"class="TA"style="background:#dcdcdc;color:#000000">
<input type="hidden" name="act" value="res"class="TA"style="background:#dcdcdc;color:#000000">
</td>
</tr>
<tr>
<td><font color=$wrlist[$maincolor]>pass</font></td>
<td><input type="password" name="delkey" value="$delkey" size=8 maxlength=8 style="$style1"></td>
<td><font color=$wrlist[$maincolor]>Color</font> $html_wrcolor</td>
</tr>
</table>

</td>
</form>
</tr>
</table>

</td>
</tr>
</table>
<br><br>
EOD
			}
		$bfart=$y2[0];
		$resflag = 0;
		$maincolor=$y2[12];
		$backcolor=$y2[13];
		$style1="border-color:$sclist1[$y2[13]];border-style:solid solid solid solid;background-color: $sclist2[$y2[13]];";
		$style2="border-color:$sclist1[$y2[13]];border-style:solid solid solid solid;background-color: $sclist2[$y2[13]];color:$wclist[$maincolor];";

		#閉じた後に表示
		$a2="";
		if ($y2[5] ne ""){
			$a2="[<a href=\"mailto:$y2[5]\"><font color=$wclist[$maincolor]>Mail</font></a>]&nbsp;";
			}
		if ($y2[6] ne ""){
			$a2.="[<a href=\"$y2[6]\" target=\"$linktarget\"><font color=$wclist[$maincolor]>HP</font></a>]&nbsp;";
			}
		($sec,$min,$hour,$day,$mon,$year)=localtime($y2[2]);
		$year+=1900;$mon++;
		# 日付0補完
		if ($sec < 10){$sec="0$sec";}
		if ($min < 10){$min="0$min";}
		if ($hour < 10){$hour="0$hour";}
		if ($day < 10){$day="0$day";}
		if ($mon < 10){$mon="0$mon";}
		$timeformat = "$year/$mon/$day $hour:$min";
		if ($ipindicate == 1){
			$y2[15] = "\n<!--$y2[15]-->";
			}else{
			$y2[15]="";
			}
		if ($imagetype == 5){
			$a12=$2 if $y2[8]=~/([^\.]*)\.(.*)/i;
			if ($imagetype{$a12} == 1){$a10=1;}else{$a10=2;}
			}else{
			$a10=$imagetype;
			}
		if ($y2[8] ne ""){
			if ($a10 == 0){
				#画像表示
				$y2[8]="<tr><td align=center><br><img src=\"$a13/$y2[8]\" alt=\"$y2[8] ($y2[9]kb)\"><br><br></td></tr>";
				}
			elsif ($a10 == 1){
				#サムネイル表示
				if  (($y2[10] eq "") || ($y2[11] eq "")){
					$y2[10]=$thumbnail[0];
					$y2[11]=$thumbnail[1];
					}
				
				$y2[8]="<tr><td align=center><br><a href=\"$a13/$y2[8]\" target=\"$imagetarget\"><img src=\"$a13/$y2[8]\" alt=\"$y2[8] ($y2[9]kb)\" width=$y2[10] height=$y2[11] border=0></a><br><br></td></tr>";
				}
			elsif ($a10 == 2){
				#リンク表示
				$y2[8]="<tr><td align=center><br><a href=\"$a13/$y2[8]\" target=\"$imagetarget\">$y2[8] ($y2[9]kb)</a><br><br></td></tr>";
				}
			elsif ($a10 == 3){
				#小窓表示
				$y2[8]="<tr><td align=center><br><a href=\"javascript:windowopen('$y2[8]');\">$y2[8] ($y2[9]kb)</a><br><br></td></tr>";
				}
			elsif ($a10 == 4){
				# EMBED 小窓表示
				$a3="";
				$a3 = $1 if $y2[8] =~ /\.(\w*)/;
				if ($embedtype{"$a3"} eq ""){
					$a3 ="$y2[8] ($y2[9]kb)";
					}else{
					$a3 = "<a href=\"javascript:windowopen('$y2[8]','$embedtype{\"$a3\"}');\">$y2[8] ($y2[9]kb)</a>";
					}
				$y2[8]="<tr><td align=center><br>$a3<br><br></td></tr>";
				}
			}

print <<EOD;
<table border=0 width=400 bgcolor=white cellpadding=0 cellspacing=0 align=center class="TA">
<tr>
<td align=center>

<table border=0 width=344 >
<tr>
<td bgcolor=white>
<div align=left>
<font color=$wclist[$maincolor]>\[$y2[0]\] $y2[3]
</div>
<div align=right>
$timeformat $y2[4] $a2
</div>
</font>
</td>
</tr>
$y2[8]
<tr>
<td bgcolor=white>
<br>
<font color=$wclist[$maincolor]>
$y2[14]
</font>$y2[15]
<br><br>
</td>
</tr>
EOD
		}
		}else{
		if ($wrflag == 1){
		#レス記事の表示
		if ($resflag == 0){
			#レス記事テーブルオープン
			print "<tr><td bgcolor=white><table width=100%>";
			$resflag = 1;
			}
		($sec,$min,$hour,$day,$mon,$year)=localtime($y2[2]);
		$year+=1900;$mon++;
		# 日付0補完
		if ($sec < 10){$sec="0$sec";}
		if ($min < 10){$min="0$min";}
		if ($hour < 10){$hour="0$hour";}
		if ($day < 10){$day="0$day";}
		if ($mon < 10){$mon="0$mon";}
		$timeformat = "$mon/$day $hour:$min";
		if ($ipindicate == 1){
			$y2[7] = "\n<!--$y2[7]-->";
			}else{
			$y2[7]="";
			}
print <<EOD;
<tr>
<td align=left valign=top>
<font color=$wclist[$y2[5]]>
\[$y2[0]\] $y2[6]
</font>$y2[7]
</td>
<td align=right nowrap valign=top>
<font color=$wclist[$y2[5]]>
$timeformat<br>$y2[3]
</font>
EOD
		}
		}
	}
#ループが終ったら最後にテーブルを閉じる

if ($resflag != 0){
	#レス記事を表示している場合、そのテーブルも閉じる
	print "</table></td></tr>\n";
	}
if ($ct != 0){
print <<EOD;
<tr>
<form method="post" enctype="multipart/form-data" action="./upboard.cgi">
<td bgcolor=white>
<table width=100% cellpadding=0>
<tr>
<td><font color=$wrlist[$maincolor]>name</font></td>
<td><input type="text" name="name" value="$name" size=10 style="$style1"class="input"></td>
<td><font color=$wrlist[$maincolor]>msg</font> <input type="text" name="msg" value="" size=30 style="$style1"class="input">
<input type="submit" value="Write" style="$style2" class="input"style="background:#dcdcdc;color:#000000">
<input type="hidden" name="num" value="$bfart" class="input"style="background:#dcdcdc;color:#000000">
<input type="hidden" name="act" value="res" class="input"style="background:#dcdcdc;color:#000000">
</td>
</tr>
<tr>
<td><font color=$wrlist[$maincolor]>pass</font></td>
<td><input type="password" name="delkey" value="$delkey" size=8 maxlength=8 style="$style1"></td>
<td><font color=$wrlist[$maincolor]>Color</font> $html_wrcolor</td>
</tr>
</table>

</td>
</form>
</tr>
</table>

</td>
</tr>
</table>
EOD
	}
}
#******************************************************************************
sub write{
#記事書きこみ
if (($referercheck == 1) && ($referer !~ /$scripturl/i)){
	&error("別ページからの投稿は禁止されています。");
	}

if ($name eq ""){&error("名前を入力してください。");}
if ($subject eq ""){&error("題名を入力してください。");}
if ($msg eq ""){&error("本文を入力してください。");}
if (length($upfile) > $maxsize){&error("画像サイズが大き過ぎます。最大$maxsizeバイトまでです。");}
if (($upfilename eq "") && ($upfile ne "")){
	&error("ファイルタイプが不正です。");
	}
$a1=0;

&tagcut;

if ($upfilename ne ""){
	if ($upfilename =~ /[^\w\.]/){
		&error("ファイル名には半角英数字・アンダーバー・ピリオドしか使用できません。");
		}
	($upfilename,$upfileexst)=($1,$2) if $upfilename=~/([^\.]*)\.(.*)/i;
	if (($upfileexst eq "") && ($exsthelp == 1)){
		#拡張子補完
		for (0 .. $#exsttype){
			if ($upfiletype eq $exsttype[$_][1]){
				$upfileexst = $exsttype[$_][0];
				last;
				}
			}
		}
	if ($upfileexst eq ""){
		&error("拡張子がついていません。");
		}
	$flag = 0;
	foreach(@permitup){
		if ($upfileexst =~ /$_/i){$flag=1;last;}
		}
	if ($flag == 0){&error("ファイルタイプが不正です。");}

	if (!-e "$updir/$upfilename\.$upfileexst"){
		$upfilename="$upfilename\.$upfileexst";
		}else{
		$ct=0;
		while(1){
			if (!-e "$updir/$upfilename\_$ct\.$upfileexst"){
				$upfilename="$upfilename\_$ct\.$upfileexst";
				last;
				}else{
				$ct++;
				if ($ct > 9999){last;}
				}
			}
		}

	#画像保存
	open (OUT,">$updir/$upfilename");
	binmode(OUT);
	print OUT $upfile;
	close (OUT);
	chmod(0666,"$updir/$upfilename");
	}


$a1="0123456789abcdefghijklmnopqrstuvwxyzABCDEGHIJKLMNOPQRSTUVWXYZ";
$a2=substr($a1,int(rand(64)),1);
$a2.=substr($a1,int(rand(64)),1);
$a9=crypt($delkey,$a2);

#画像の大きさ取得
$width="";
$height="";

if (($upfilename ne "") && ($autothumb == 1)){
	if ($upfileexst eq 'png'){
		$a1=0;
		$a2=0;
		while(1){
			$a2++;
			$a3=substr($upfile,$a1,4);
			if (($a3 eq 'IHDR') || ($a2 > 999)){last;}
			$a1+=4;
			if ($a1 > 9999){last;}
			}
		if ($a2 < 999){
			$a2=substr($upfile,$a1+4,4);
			$a3=substr($upfile,$a1+8,4);
			$width=ord(substr($a2,0,1))*256*256*256+ord(substr($a2,1,1))*256*256+ord(substr($a2,2,1))*256+ord(substr($a2,3,1));
			$height=ord(substr($a3,0,1))*256*256*256+ord(substr($a3,1,1))*256*256+ord(substr($a3,2,1))*256+ord(substr($a3,3,1));
			}
		}
	elsif ($upfileexst eq 'gif'){
		$width=ord(substr($upfile,7,1))*256+ord(substr($upfile,6,1));
		$height=ord(substr($upfile,9,1))*256+ord(substr($upfile,8,1));
		}
	elsif (($upfileexst eq 'jpg') || ($upfileexst eq 'jpeg')){
		open (SIZE,"$updir/$upfilename");
		binmode(SIZE);
		read(SIZE,$a1,20);
		$aaa=0;
		while (1) {
			$aaa++;
			last if $aaa > 9999;
			$a2=4;
			read(SIZE,$a1,$a2);
			($a3,$a4,$a2)=unpack("a a n",$a1);
			if ((ord($a4) >= 0xC0) && (ord($a4) <= 0xC3)){
				$a2=5;
				read(SIZE,$a1,$a2);
				($height,$width)=unpack("xnn",$a1);
				last;
				}else{
				read(SIZE,$a1,($a2-2));
				}
			}
		close (SIZE);

		}
	elsif (($upfileexst eq 'bmp') || ($upfileexst eq 'dib')){
		$width=ord(substr($upfile,21,1))*256*256*256+ord(substr($upfile,20,1))*256*256+ord(substr($upfile,19,1))*256+ord(substr($upfile,18,1));
		$height=ord(substr($upfile,25,1))*256*256*256+ord(substr($upfile,24,1))*256*256+ord(substr($upfile,23,1))*256+ord(substr($upfile,22,1));
		}
	if (($width ==0) || ($height == 0)){$width=$height="";}
	if (($width ne "") && ($height ne "")){
		if (($width >= $autothumbsize) && ($height >= $autothumb)){
			if ($width >= $height){
				$a1=$autothumbsize/$width;
				$width=$autothumbsize;
				$height=int($height*$a1);
				}else{
				$a1=$autothumbsize/$height;
				$height=$autothumbsize;
				$width=int($width*$a1);
				}
			}

		}
	}

#ログ保存
$ct=-1;
@y1=();
$a2=-1;
$a3="";
$size=int(length($upfile)/1024*10)/10;
open (IO,"+<$logfile");
eval{flock(IO,2)};
while(<IO>){
	$a1=$_;
	@y2=split(/<>/,$a1);
	if ($y2[0] >= $ct){$ct=$y2[0]+1;}
	if ($y2[2] > $a2){$a2=$y2[2];$a3=$y2[14];}
	push(@y1,$a1);
	}
if (($doubleerror == 1) && ($a3 eq $msg)){
	close (IO);
	unlink("$updir/$upfilename");
	&error("二重投稿は禁止されています。");
	}

if ($ct < 0){$ct=1;}
truncate(IO,0);
seek(IO,0,0);

unshift(@y1,"$ct<>0<>" . time() . "<>$subject<>$name<>$email<>$siteurl<>$a9<>$upfilename<>$size<>$width<>$height<>$wrcolor<>$bgcolor<>$msg<>$ip/$host<>\n");
$ct=0;
for (0 .. $#y1){
	if ($y1[$_] eq ""){next;}
	@y2=split(/<>/,$y1[$_]);
	if ($y2[1] == 0){$ct++;}
	if ($ct > $logmax){
		if (($y2[1] == 0) && ($y2[8] ne "")){
			unlink("$updir/$y2[8]");
			splice(@y1,$_,1);
			redo;
			}
		}else{
		print IO $y1[$_];
		}
	}
close (IO);
$readflag=1;

}
#******************************************************************************
sub res{
#レス書きこみ
if ($name eq ""){&error("名前を入力してください。");}
if ($msg eq ""){&error("MESSAGE REQUIRED");}
&tagcut;

$a1="0123456789abcdefghijklmnopqrstuvwxyzABCDEGHIJKLMNOPQRSTUVWXYZ";
$a2=substr($a1,int(rand(64)),1);
$a2.=substr($a1,int(rand(64)),1);
$a4=crypt($delkey,$a2);
$a5=time();

#ログ保存
$ct=-1;
@y1=();
$a2=-1;
$a3="";
$size=int(length($upfile)/1024*10)/10;
open (IO,"+<$logfile");
eval{flock(IO,2)};
while(<IO>){
	$a1=$_;
	@y2=split(/<>/,$a1);
	if ($y2[0] >= $ct){$ct=$y2[0]+1;}
	if ($y2[2] > $a2){$a2=$y2[2];$a3=$y2[6];}
	push(@y1,$a1);
	}
if (($doubleerror == 1) && ($a3 eq $msg)){
	close (IO);
	&error("DO NOT SEND MESSAGE TWICE");
	}
@y3=();
truncate(IO,0);
seek(IO,0,0);

if ($resmove == 0){
	#レスがあっても移動せず
	$flag = 0;
	foreach(@y1){
		@y2=split(/<>/,$_);
		if (($flag == 1) && ($y2[1] == 0)){
			print IO "$ct<>1<>$a5<>$name<>$a4<>$wrcolor<>$msg<>$ip/$host<>\n";
			push(@y3,"$ct<>1<>$a5<>$name<>$a4<>$wrcolor<>$msg<>$ip/$host<>\n");
			$flag = 2;
			}
		if (($y2[0] == $num) && ($flag ==0)){
			$flag=1;
			}
		print IO $_;
		push(@y3,$_);
		}
	if ($flag == 1){
		print IO "$ct<>1<>$a5<>$name<>$a4<>$wrcolor<>$msg<>$ip/$host<>\n";
		push(@y3,"$ct<>1<>$a5<>$name<>$a4<>$wrcolor<>$msg<>$ip/$host<>\n");
		}
	}else{
	#レスがあったら移動
	$flag =0;
	for (0 .. $#y1){
		if ($y1[$_] eq ""){next;}
		@y2=split(/<>/,$y1[$_]);
		if (($flag == 1) && ($y2[1] == 0)){
			last;
			}
		if ($y2[0] == $num){
			$flag=1;
			}
		if ($flag){
			print IO $y1[$_];
			push(@y3,$y1[$_]);
			splice(@y1,$_,1);
			redo;
			}
		}
	print IO "$ct<>1<>$a5<>$name<>$a4<>$wrcolor<>$msg<>$ip/$host<>\n";
	push(@y3,"$ct<>1<>$a5<>$name<>$a4<>$wrcolor<>$msg<>$ip/$host<>\n");
	foreach(@y1){
		@y2=split(/<>/,$_);
		print IO $_;
		push(@y3,$_);
		}
	}
close (IO);
$readflag=1;
@y1=();
@y1=@y3;
@y3=();
}
#******************************************************************************
sub del{
#記事削除
if ($num eq ""){&error("記事番号を入力してください。");}
if ($pass eq ""){&error("削除キーを入力してください。");}
@y1=@y3=();
$ct=0;
$ct2=0;
open (IO,"+<$logfile");
eval{flock(IO,2)};
while(<IO>){
	push(@y1,$_);
	@y2=split(/<>/,$_);
	if ($y2[0] == $num){@y3=@y2;$ct2=$ct;}
	$ct++;
	}
if ($y3[0] eq ""){&error("記事番号が不正です。");}
if (($y3[1] == 1) && ($del == 1)){&error("レス記事のファイル削除は出来ません。");}
elsif(($y3[8] eq "") && ($del == 1)){&error("ファイルが設定されていません。");}

if ($y3[1] == 0){$a1=$y3[7];}else{$a1=$y3[4];}
if ((crypt($pass,$a1) ne $a1) && ($pass ne $adminpass)){
	&error("削除キーが間違っています。");
	}
truncate(IO,0);
seek(IO,0,0);
if ($y3[10] eq ""){
	#レス記事削除
	foreach(@y1){
		@y2=split(/<>/,$_);
		if ($y2[0] != $num){print IO;}
		}
	close (IO);
	&error("$num番の記事を削除しました。");
	}else{
	unlink("$updir/$y3[8]");
	$y1[$ct2]="$y3[0]<>$y3[1]<>$y3[2]<>$y3[3]<>$y3[4]<>$y3[5]<>$y3[6]<>$y3[7]<><>$y3[9]<>$y3[10]<>$y3[11]<>$y3[12]<>$y3[13]<>$y3[14]<>$y3[15]<><><>\n";

	if ($del == 1){
		#ファイルだけ削除
		print IO @y1;
		close (IO);
		&error("$num番のファイルを削除しました。");
		}else{
		#レスごと削除
		if ($ct2 != 0){
			for (0 .. $ct2-1){
				print IO $y1[$_];
				}
			}
		$flag = 0;
		for ($ct2+1 .. $#y1){
			if ($flag == 0){
				@y2=split(/<>/,$y1[$_]);
				if ($y2[1] == 0){
					$flag=1;
					}
				}
			if ($flag){
				print IO $y1[$_];
				}
			}
		close (IO);
		&error("$num番とそのレス記事を削除しました。");
		}
	}
}
#******************************************************************************
sub play{
#小窓表示
print "Content-type:text/html; charset=shift_jis\n\n";
print <<EOD;
<html>
<head>
<meta http-equiv="content" content="text/html; charset=shift_jis">
<title>$filename</title>
</head>
<body marginwidth=0 marginheight=0 leftmargin=0 topmargin=0>
EOD
if ($upurl ne ""){
	print "<embed src=\"$upurl/$filename\" type=\"$filetype\" autostart=\"true\" text=\"$filename\" width=\"$windowsize[0]\" height=\"$windowsize[1]\">";
	}else{
	print "<embed src=\"$updir/$filename\" type=\"$filetype\" autostart=\"true\" text=\"$filename\" width=\"$windowsize[0]\" height=\"$windowsize[1]\">";
	}
print <<EOD;
<noembed>
ブラウザが対応していません。
</noembed>
</body>
</html>
EOD
exit;
}
#*****************************************************************************
sub tagcut{

#文末の改行コードを除く
$aaa=0;
while(1){
	$aaa++;
	if ($aaa > 9999){last;}
	if(chomp($msg) == 0){last;}
	}

#許可タグ以外を無効にする
$msg =~ s/[\t\a]//g;
$msg =~ s/&/&amp;/g;
$msg =~ s/</\t/g;
$msg =~ s/>/\a/g;
foreach (@permittag){
	$msg =~ s/\t(\/?$_)\a/<$1>/g;
	$msg =~ s/\t$_ ([^\a]*)\a/<$_ $1>/g;
	}
$msg =~ s/\t/&lt;/g;
$msg =~ s/\a/&gt;/g;
$msg =~ s/&amp;/&/g;

#タグ閉じ忘れを修正
foreach (@permittag){
	if (($msg =~ /<$_/) && ($msg !~ /<\/$_/)){$msg .="<\/$_>";}
	}

#URLには自動的にリンクを行う
if ($autolink == 1){
	$msg =~ s/(http:\/\/[a-zA-Z0-9\.\/\-+#_?~&%=^\@:;]+)/<A HREF="$1"><font color=$wrcolor>$1<\/font><\/A>/g;
	}
$msg =~ s/\n/<br>/g;
$subject =~ s/</&lt;/g;
$subject =~ s/>/&gt;/g;
}
#******************************************************************************
sub error{
#エラー表示
&hphead;
print <<EOD;
<table border=0 width=80% align=center cellpadding=0 cellspacing=0>
<tr><td bgcolor=$bordercolor>
<table width=100% align=center border=0>
<tr><td bgcolor=$incolor align=center>
<br>
<br>
<b>$_[0]</b><br>
<br>
<br>
<a href="./upboard.cgi">戻る</a><br>
<br>
<br>
</td></tr>
</table>
</td></tr>
</table>
<br>
EOD
&hpfoot;
}
#******************************************************************************
sub hphead{
#ヘッダ表示

if ($imagetype == 3){
$script = <<EOD;
<script language="javascript">
<!--
function windowopen(a1){

window.open("$updir/" + a1,"","width=$windowsize[0],height=$windowsize[1],scrollbars=no,status=no,resizable=yes");
}
-->
</script>
EOD
	}
elsif ($imagetype == 4){
$script = <<EOD;
<script language="javascript">
<!--
function windowopen(a1,a2){
window.open("./upboard.cgi?act=play&filename=" + a1 + "&filetype=" + a2,"","width=$windowsize[0],height=$windowsize[1],scrollbars=no,status=no,resizable=yes");
}
-->
</script>
EOD
	}
else {$script = "";}

print "Content-type:text/html; charset=shift_jis\n\n";
print <<EOD;
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=shift_jis">
<meta http-equiv="pragma" content="no-cache">
<meta name="Robots" content="noindex, nofollow">
<title>$title</title>
$stylesheet
$script
</head>
$body
$pagetop
<br>
<br>
EOD
}
#*****************************************************************************
sub hpfoot{
#フッタ表示
#
#著作権表示を消すこと禁止します。
#
print <<EOD;


<div align=right>
<a href="http://dream.lib.net/room/" target="_blank">Base cgi from The Room</a>
</div><SPAN id="Fr0Ji71" class="class0Ji71"> <SPAN id="Ma0Ji71" class="class0Ji71"> 
<div style="font-size:1pt"><IMG SRC="../../common/spacerM.gif" NAME="ga1" width="10"><A href="../../cloud/cloud_index.html"target="_top"style="color:#ffffff" onMouseOver='gaChaRi12("ga1",1)' onMouseOut='gaChaRi12("ga1",2)'><img src="../../common/menu_cloud.gif"title="Cloud &#13; 雲の種類"style="border-color:#ffffff"></a><img src="../../common/spacerV.gif"NAME="ga2"width="10"> 
  <A HREF="../../met/met_index.html"target="_top"style="color:#ffffff"onMouseOver='gaChaRi12("ga2",1)' onMouseOut='gaChaRi12("ga2",0)'><img src="../../common/menu_met.gif"title="Meteorology &#13; 気象現象の仕組み"style="border-color:#ffffff"></a><img src="../../common/spacerV.gif"NAME="ga3"width="10"> 
  <A HREF="../../weather/weather_index.html"target="_top"style="color:#ffffff"onMouseOver='gaChaRi12("ga3",1)' onMouseOut='gaChaRi12("ga3",0)'><img src="../../common/menu_weather.gif"title="Weather &#13; 天気\予\報と天気のことわざ"style="border-color:#ffffff"></A><img src="../../common/spacerV.gif"NAME="ga4"width="10"> 
  <A HREF="../../common/data_center.html"target="_top"style="color:#ffffff"onMouseOver='gaChaRi12("ga4",1)' onMouseOut='gaChaRi12("ga4",0)'><img src="../../common/menu_data.gif"title="Data Center &#13; 天気に関するデータベース"style="border-color:#ffffff"></A><img src="../../common/spacerV.gif"NAME="ga5"width="10"> 
  <A HREF="../../common/activities.html"target="_top"style="color:#ffffff"onMouseOver='gaChaRi12("ga5",1)' onMouseOut='gaChaRi12("ga5",0)'><img src="../../common/menu_activities.gif"title="Activities &#13; 誰でも参加できます"style="border-color:#ffffff"></A><img src="../../common/spacerV.gif"NAME="ga6"width="10"> 
  <A HREF="../../common/about.html"target="_top"style="color:#ffffff"onMouseOver='gaChaRi12("ga6",1)' onMouseOut='gaChaRi12("ga6",0)'><img src="../../common/menu_info.gif"title="Information &#13; 参考文献・staff ... etc"style="border-color:#ffffff"></A> 
</div>
</SPAN> <SPAN id="Ta0Ji71" class="class0Ji71"> 
<div align="left"> <A HREF="../../frontindex.html"target="_top"onmouseover="JavaScript:scrollJi71(0)"><img src="../../common/menu.gif"style="border:1pt #ffffff"></a>
</div>
</SPAN> </SPAN> 
</body>
</html>
EOD
exit;
}

#*****************************************************************************
sub help{
#エラー表示
&hphead;
print <<EOD;
<table border=0 width=80% align=center cellpadding=0 cellspacing=0>
<tr><td bgcolor=$bordercolor>
<table width=100% align=center border=0>
<tr><td bgcolor=$incolor>
<br>
<div align=center>Help?</div><br>
<br>
<br>
&nbsp;・あなたの撮った雲の写真をUPしてください<br>
<br>
&nbsp;・ログの上限$logmaxです<br>
<br>
&nbsp;・最新の書き込みが上に来ます<br>
<br>
&nbsp;・ファイル形式は.jpg .gif .png .bmpのみです<br>
<br>
&nbsp;・ファイル名がアルファベットと数字のみ認識されます<br>
&nbsp;&nbsp;&nbsp;ファイル形式を確認してください<br>
<br>
&nbsp;・上限は$maxsizeバイト<br>
<br>
&nbsp;・削除はページの一番下で行えます<br>
&nbsp;&nbsp;&nbsp;本文とともにresも消されます<br>
&nbsp;&nbsp;&nbsp;article = 写真のみです<br>
<br>
<br>
<div align=center><a href="./upboard.cgi">Back</a></div>
<br>
<form method="post" enctype="multipart/form-data" action="./upboard.cgi">
<div align=right>
<input type="password" name="pass" value="" size=10 maxlength=8 class="input">
<input type="submit" value="Admin" class="button">
<input type="hidden" name="act" value="admin">
</div>
</td></form></tr>
</table>
</td></tr>
</table>
<br>
EOD
&hpfoot;
}
#*****************************************************************************