
#●
#---------------------------------------------------------------------------------------
# 名称     | Write_Message
# Version  | 1.20
# 処理名   | 記録処理
# 動作内容 | 投稿されたデータを記録する(パスワードは管理者パスワードとなる)
# 引数     | なし
# 戻り値   | なし
#
sub Write_Message {

	($admin) = &CheckAdmin();
	if (-s $message_file > $maxsize && !$admin) { &Error("記録不可","記録ファイルのサイズが、記録できる最大値を超えましたので投稿できません. (管理者を除く)"); }

	if ($in{'NAME'} eq '' || $in{'NAME'} =~ /[\<\>\,\;\:]/) { &Error("未記入があります","名前を入力してください.","\<\>\,\;\:は使えません."); }
	if ($in{'EMAIL'} ne '' && !($in{'EMAIL'} =~ /\b[-\w.]+@[-\w.]+\.[-\w]+\b/)) { &Error("未記入があります","Ｅメールを半角で正しく入力してください."); }
	if ($in{'TITLE'} eq '') { &Error("未記入があります","タイトルを入力してください."); }
	if ($in{'VALUE'} eq '') { &Error("未記入があります","本文を入力してください."); }

	#ホスト名の取得(リムネットなら次の４行を指定のプログラムと入れ替える)
	$host = $ENV{'REMOTE_HOST'};
	$addr = $ENV{'REMOTE_ADDR'};
	if ($host eq '') { $host = $addr; } # ホスト名にＩＰが入らない場合があるので
	if ($host eq $addr) { $host = gethostbyaddr(pack('C4',split(/\./,$host)),2) || $addr; }

	if ($preview) { &Preview; } # プレビュー処理へ

	# 既に記録された最新のデータと比較
	$sample = "$in{'NAME'}\t$in{'EMAIL'}\t$in{'TITLE'}\t$in{'MODE'}\t$in{'LINK'}\t$in{'VALUE'}";
	if ($messages[0] ne '') { $messages[0] =~ s/\n//; } # 改行を削除
	($number2,$pwd2,$date,$name,$email,$host2,$title,$mode,$link,$reserve,$value) = split(/\t/,$messages[0],11);
	$target = "$name\t$email\t$title\t$mode\t$link\t$value";
	if ($sample eq $target && !$deleted{$number2}) { return; }

	($number,$i) = split(/\t/,$messages[0],2); # 最大番号を取り出す
	$number ++; # 番号を+1する
	$date_now = sprintf("%04d/%01d/%01d(%s)%02d:%02d",$year +1900,$mon +1,$mday,$wday_array[$wday],$hour,$min); # 時刻構成

	$new = "$number\t$master\t$date_now\t$in{'NAME'}\t$in{'EMAIL'}\t$host\t$in{'TITLE'}\t$in{'MODE'}\t$in{'LINK'}\t\t$in{'VALUE'}\n"; # 記録するデータ
	unshift(@messages,$new); # 既に読み込んだデータ(逆順済み)の先頭に追加する

	if (!open(OUT,">> $message_file")) { &Error('エラー','メッセージファイルが見つからないか、記録できません.'); } # 追加書込モードで記録する
	print OUT $new;
	close(OUT);

	if (!$in{'cookie1'} && !$in{'cookie2'} && !$in{'cookie3'}) { $date_gmt = "Sun, 01-Jan-1995 01:00:00 GMT"; } # クッキーを削除するには正確な過去を設定する
	else {
		($secg,$ming,$hourg,$mdayg,$mong,$yearg,$wdayg,$ydayg,$isdstg) = gmtime(time + 30*24*60*60);# 期限を30日後に設定(GMT)
		$y0="Sunday"; $y1="Monday"; $y2="Tuesday"; $y3="Wednesday"; $y4="Thursday"; $y5="Friday"; $y6="Saturday";
		$m0="Jan"; $m1="Feb"; $m2="Mar"; $m3="Apr"; $m4="May"; $m5="Jun"; $m6="Jul"; $m7="Aug"; $m8="Sep"; $m9="Oct"; $m10="Nov"; $m11="Dec";
		@youbi = ($y0,$y1,$y2,$y3,$y4,$y5,$y6);
		@monthg = ($m0,$m1,$m2,$m3,$m4,$m5,$m6,$m7,$m8,$m9,$m10,$m11);
		$date_gmt = sprintf("%s\, %02d\-%s\-%04d %02d:%02d:%02d GMT",$youbi[$wdayg],$mdayg,$monthg[$mong],$yearg +1900,$hourg,$ming,$secg);

		if ($in{'cookie1'}) { $COOKIE{'NAME'} = $in{'NAME'}; } else { $COOKIE{'NAME'} = ""; } # 保存する項目の処理
		if ($in{'cookie2'}) { $COOKIE{'EMAIL'} = $in{'EMAIL'}; } else { $COOKIE{'EMAIL'} = ""; }
		if ($in{'cookie3'}) { $COOKIE{'PASSWD'} = $in{'PASSWD'}; } else { $COOKIE{'PASSWD'} = ""; }
	}

	print "Set-Cookie: $ENV{'SCRIPT_NAME'}\_$cmd{'log'}=NAME:$COOKIE{'NAME'}\,EMAIL:$COOKIE{'EMAIL'}\,PASSWD:$COOKIE{'PASSWD'}; path=$path; expires=$date_gmt\n"; # クッキーをセット

}#End_of_Write_Message
