#!/usr/local/bin/perl

# 　　↑多くの場合このままでいいですが、
# 上のperlのパスはサーバーによって違うことがあるので、
# プロバイダーのCGI設置案内を参照して下さい。

# ===================================================================
# メール配信付 EASY 掲示板 （EASY BBS Ver2.0c）
# File name: ezml.cgi
# Copyright; Hiroshi Ishikawa (e-mail; laut@net-easy.com)
#            (URL; http://www.net-easy.com)
# Last Update: 2001/07/14
#
# EASY BBS Ver2.0bは個人使用に限りフリーウェアです。
# 課金の発生する商用利用などはお問い合わせ下さい。
# また、改造は自由ですが、この欄は削除しないで下さい。
# ===================================================================

require './cgi-lib.pl';	#他の場所にあるときは相対パスで指定
require './jcode.pl';	#他の場所にあるときは相対パスで指定
&ReadParse;

# この掲示板のタイトル
$title = '掲示板つけてみました';

# 保存する投稿総数（これを超えたら自動削除される）
$max = 500;

# １ページに表示する件数
$pmax = 10;

# 記録保存ファイル
$file = 'ezml.txt';
$mailfile = 'maf.txt';

# パスワード（投稿記事の削除の際必要）
$password = 'abc123';

# 自分のホームページのURL
$home = 'http://www.pu-toyama.ac.jp/BR/hibari';	#相対パスでも可

# 自分のメールアドレス
$myaddress = 'r56005@st.pu-toyama.ac.jp';

# サーバーのsendmailのパス
# サーバー（プロバイダ）によって違う場合もあるので、確認して下さい
$sendmail = '/usr/lib/sendmail';

# メール送信されるときの差出人名。英数半角文字を使用してください
$mail_from = 'YUYOseibutu';

# メール送信したときのメールのサブジェクト。文字数は少ない方がいいでしょう(英数半角文字）
# この文字の次にナンバーが入ります
$mail_title = 'YUYO_BBS-message';

# この掲示板を設置してある場所をフルパスで記入
$cgi_url = 'http://www.pu-toyama.ac.jp/BR/hibari/cgi/bbs/ezml.cgi';

# cookieを使用するかしないか
# １を選ぶと、名前、メールアドレス、Homepage URLをブラウザに記憶させる
$cook = '1';	#使用は1、使用しないは0

# cookieの初期設定（上で「１」を選んだ場合のみ必要）
$cookie = '有用生物掲示板';	#変更してもしなくても可
$cookieExpires = &expires(1000);	#かっこの中の数字はcookieの有効日数
# 上の２つは変更しなくても、問題ありません

# =====================================================================
# 初期設定が必要なのはここまでです
# ---------------------------------------------------------------------
# これ以下は変更の必要はありませんが、BODYタグなどを変更するだけなら
# 変更可能です。ただし、$xxxxのように変数を使っているところを変更すると
# エラーの原因となるので注意して下さい。 
# =====================================================================

# cookieの有無を調べ、あれば取得サブルーチンへ
if ($ENV{'HTTP_COOKIE'} =~ /$cookie/){
	&CookieCutter;
}

# 条件により処理を分岐
if($in{'action'} eq "next_page"){
	&go_next;
}elsif($in{'action'} eq "go_pass"){
	if($in{'password'} eq $password){
		&delete_html;
	}else{
		&error(pass_er);
	}
}elsif($in{'action'} eq "sakujo"){
	if($in{'password'} eq $password){
		&delete;
		&delete_html;
	}else{
		&error(pass_er);
	}
}elsif($in{'action'} eq "kakikomi"){
	&kakikomi;
}elsif($in{'action'} eq "register_form"){
	&register_form;
}elsif($in{'action'} eq "touroku"){
	&touroku;
}else{
	&html;
}

# 最初に呼び出されたときのサブルーチン
sub html {
	print "Content-type: text/html\n";
	if($cook eq '1'){
		&SetCookie;
	}
print "\n";

print <<EOM;
<HTML>
<HEAD>
<TITLE>$title</TITLE>
<META name="GENERATOR" content="IBM HomePage Builder V3.0  for Windows">
</HEAD>
<BODY bgcolor="#F7F7E0">
<H2 align="center"><FONT color="blue">$title</FONT></H2>
<HR width="80%">
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=100%>
<TR><TD VALIGN="TOP">
この掲示板に投稿された内容を、メールで受け取ることができます。
<BR>メールリスト登録・削除は
<A HREF="ezml.cgi?action=register_form">こちら</A>
</TD><TD ALIGN="RIGHT" VALIGN="TOP">
<B><A HREF="$home"><font size="-1">戻る</font></B></A>
</TD></TR>
</TABLE>
<CENTER>
<TABLE border=0>
  <TR>
    <TD  nowrap>
    <FORM action="ezml.cgi" method="POST">
    <INPUT type="hidden" name="action" value="kakikomi">
<B><FONT size="3">お名前：<INPUT name="name" value="$cookie_name" size="27"><BR>
メールアドレス：</B><INPUT name="mail" value="$cookie_mail" size="38">
<FONT size="2">(半角英数字使用）</FONT><BR>
<B>Home Page URL:</B></FONT><INPUT name="url" size="50" value="http://$cookie_urlnew">
<FONT size="2">(半角英数字使用）</FONT><BR>
<FONT size="2">(Home Page URLは省略可）</FONT><BR>
<B><FONT size="3">タイトル：<INPUT name="dai" size="35"></B><BR>
返信投稿の時は元の投稿番号を半角数字で記入（タイトルは不要）
RES<INPUT name="res" size="3"><BR>
<B>コメント：<BR></FONT>
<TEXTAREA name="comment" rows="7" cols="65">
</TEXTAREA>
<BR>
<INPUT type="submit" value="送信する">　<INPUT type="reset" value="Reset"></B>
    </FORM>
</TD></TR>
</TABLE>
</CENTER>
新着順に表\示されます。新着順に最大$max件まで保存されます。
<HR>
EOM

	$i = 0;
	&read_file;

	$okuri = $i;	#次のページの最初に読み出す行になる

	print "<DIV align=\"left\">\n";
	print "全$count件が記録されています。\n";
	print "１ページに\n";
	print "$pmax件ずつ表\示されます\n";

if($count > $pmax){
print <<EOM;
<TABLE>
  <TR>
    <TD>
    <FORM action="ezml.cgi" method="POST">
    <INPUT type="hidden" name="action" value="next_page">
    <INPUT type="hidden" name="okuri" value="$okuri">
    <INPUT type="hidden" name="inistart" value="0">
<INPUT type="submit" value="次のページ">
    </FORM>
</TD>
</TR>
</TABLE>
</DIV>
EOM
	}

# ここから20行は変更しないで下さい(Copyright)
print <<EOM;
<DIV align="right">
<TABLE>
  <TR>
    <TD>
    <FORM action="ezml.cgi" method="post">
    <INPUT type="hidden" name="action" value="go_pass">
<INPUT type="submit" value="管理者"><INPUT type="password" name="password" size="18">
    </FORM>
</TD></TR>
</TABLE>
</DIV>
</P>
</BODY>
</HTML>
EOM
}

# ２ページ目以降を出力するサブルーチン
sub go_next{
	if($in{'modori'} eq '0'){
		&html;
	}else{
	print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD>
<TITLE>$title</TITLE>
<META name="GENERATOR" content="IBM HomePage Builder V3.0  for Windows">
</HEAD>
<BODY bgcolor="#F7F7E0">
<H2 align="center"><FONT color="blue">$title</FONT></H2>
<HR>
EOM

	if($in{'okuri'} ne ''){
		$i = $in{'okuri'};
		$ini = $i;	#このページの最初の行
	}elsif($in{'modori'} ne ''){
		$i = $in{'modori'};
		$ini = $i;
	}

	&read_file;

	$okuri = $i;	#次のページの最初に読み出す行になる
	$modori = ($ini - $pmax);    #前のページの最初に読み出す行
	$ini_end = ($i - 1);	#このページの最後の行
	$ini_view = $ini + 1;
	$ini_end_view = $ini_end + 1;
print <<EOM;
<DIV align="left">
全$count件中、このページには$ini_view件〜$ini_end_view件を表\示しています<BR>
<TABLE border=0>
  <TR>
    <TD>
    <FORM action="ezml.cgi" method="POST">
    <INPUT type="hidden" name="action" value="next_page">
    <INPUT type="hidden" name="modori" value="$modori">
<INPUT type="submit" value="前のページ">
    </FORM>
</TD>
<TD>
EOM
	if($i eq $count){
		print "このページが最後です\n";
	}else{
		print "<FORM action=\"ezml.cgi\" method=\"POST\">\n";
		print "<INPUT type=\"hidden\" name=\"action\" value=\"next_page\">\n";
		print "<INPUT type=\"hidden\" name=\"okuri\" value=\"$okuri\">\n";
		print "<INPUT type=\"submit\" value=\"次のページ\">\n";
		print "<\/FORM>\n";
	}

print <<EOM;
</TD>
<TD>
    <FORM action="ezml.cgi" method="POST">
<INPUT type="submit" value="最新・投稿ページ">
    </FORM>
</TD></TR>
</TABLE>
</DIV>
</BODY>
</HTML>
EOM
}
}

# 指定された行数だけファイルを読み出すサブルーチン
sub read_file{
	if(!open(OUT,"$file")){&error(err_fail);}
	flock(OUT,2);
	@DATA = <OUT>;
	flock(OUT,8);
	close(OUT);

	$count = @DATA;
	if($count < $pmax){
		$pmax_new = $count;
	}elsif(($count - $i) < $pmax){
		$pmax_new = ($count - $i);
	}else{
		$pmax_new = $pmax;
	}
	while($pmax_new > 0){
		($cnt,$date,$name,$mail,$url,$dai,$comment,$remt_h,$remt_ad) = split(/\,/,$DATA[$i]);
		if($url eq ''){
			$url = '';
		}elsif($url ne 'http://'){
			$url = "&lt;<A href=\"$url\">$url</A>&gt;";
		}else{
			$url = '';
		}

		$dai = "<B>タイトル[<font color=\"green\">$dai</font>]</B>";
		$name = "<A href=\"mailto:$mail\">$name</A>";

		print "$date <B>投稿者[$name]</B> $url<BR>\n";
		print "<DL>\n<DT><B><FONT color=\"#0000ff\">\【No\.$cnt\】</FONT></B> $dai\n";
		print "<DD>$comment\n</DL>\n";
		print "<HR noshade size=\"1\" width=\"95\%\">\n";

		$i ++;
		$pmax_new --;
	}
}

# 書き込みサブルーチン
sub kakikomi {
	$in_name = $in{'name'};
	$in_comment = $in{'comment'};
	$in_dai = $in{'dai'};

	$mail_comment = $in_comment;
	&jcode'convert(*mail_comment,"sjis");
	
	# HTMLタグの書き込み禁止 
	$in_name =~ s/&/&amp;/g;
	$in_name =~ s/</&lt;/g;
	$in_name =~ s/>/&gt;/g;
	$in_name =~ s/,/./g;
	$in_comment =~ s/&/&amp;/g;
	$in_comment =~ s/</&lt;/g;
	$in_comment =~ s/>/&gt;/g;
	$in_comment =~ s/\n/<BR>/g;
	$in_comment =~ s/\r//g;
	$in_comment =~ s/,/./g;
	$in{'url'} =~ s/&/&amp;/g;
	$in{'url'} =~ s/</&lt;/g;
	$in{'url'} =~ s/>/&gt;/g;
	$in{'url'} =~ s/,/./g;
	$in_dai =~ s/&/&amp;/g;
	$in_dai =~ s/</&lt;/g;
	$in_dai =~ s/>/&gt;/g;
	$in_dai =~ s/,/./g;

	&jcode'convert(*in_name,"sjis");
	&jcode'convert(*in_comment,"sjis");
	&jcode'convert(*in_dai,"sjis");

	# 時間の取得
	($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime;
	$mon++;
	@week = ('日','月','火','水','木','金','土');
	$wday = $week[$wday];
	$mon = sprintf("%.2d",$mon);
	$mday = sprintf("%.2d",$mday);
	$hour = sprintf("%.2d",$hour);
	$min = sprintf("%.2d",$min);
	$sec = sprintf("%.2d",$sec);

	$year = substr($year,1,2);

	if($in_name eq ''){
		&error(name_er);
	}elsif($in{'mail'} eq ''){
		&error(mail_er);
	}elsif($in{'mail'} !~ /[a-zA-Z0-9\-_]\@.*[a-z0-9\-_]\.[a-z0-9\-_]/){
		&error(mail_er);
	}elsif($reskiji eq "no"){
			&error(err_res);
	}elsif(($in{'res'} eq '') && ($in_dai eq '')){
			&error(err_dai);
	}elsif($in_comment eq ''){
		&error(comment_er);
	}else{
		if($in{'res'} ne ''){
			if($in{'res'} !~ /[0-9]*[0-9]/){
			&error(err_res);
			}
		if(!open(OUT,"$file")){&error(err_fail);}
		flock(OUT,2);
		@DATA = <OUT>;
		flock(OUT,8);
		close(OUT);
		$reskiji = "no";
		$i = 0;
		foreach $line (@DATA){
			($cnto,$date,$name,$mail,$url,$daio,$comment,$remt_h,$remt_ad) = split(/\,/,$line);
			if ($in{'res'} eq $cnto){
			$reskiji = "yes";
			last;
			}
		$i ++;
		}
			if($reskiji eq "yes"){
				$res_check = substr($daio,0,3);
				if($res_check eq "RE\:"){
					$daio =~ s/\(\Res\#*[0-9]*\)//g;
					$dai_new = "$daio\(Res\#$cnto\)";
				}else{
					$dai_new = "\RE\:$daio\(Res\#$cnto\)";
				}
			}elsif($reskiji eq "no"){
			&error(err_res);
			}
	}elsif($in_dai ne ''){
		$dai_new = $in_dai;
	}

	if(!open(OUT,"$file")){&error(err_fail);}
	flock(OUT,2);
	$line1 = <OUT>;
	flock(OUT,8);
	close(OUT);
	($cnt1,$date,$name,$mail,$url,$dai,$comment,$remt_h,$remt_ad) = split(/\,/,$line1);
	$cnt1 ++;

	$remote_addr = $ENV{'REMOTE_ADDR'};
	$remote_host = ((gethostbyaddr(pack('C4',split(/\./,$remote_addr)),2))[0]);
	$new_comment = "$cnt1,$year/$mon/$mday($wday)$hour:$min:$sec,$in_name,$in{'mail'},$in{'url'},$dai_new,$in_comment,$remote_host,$remote_addr\n";
	if(!open(OUT,"$file")){&error(err_fail);}
	flock(OUT,2);
	@DATA = <OUT>;
	flock(OUT,8);
	close(OUT);

	unshift(@DATA,$new_comment);
	$i = 0;
	foreach $line(@DATA){
		$i ++;
		if($i > $max){last;}
		push(@NEWDATA,$line);
	}

	if(!open(IN,">$file")){&error(err_fail);}
	flock(IN,2);
	print IN @NEWDATA;
	flock(IN,8);
	close(IN);
	&mail;
	&html;

	}
}

# 削除する行を選ぶHTML画面を出力するサブルーチン
sub delete_html{
	print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD>
<TITLE>削除画面</TITLE>
<META name="GENERATOR" content="IBM HomePage Builder V3.0  for Windows">
</HEAD>
<BODY bgcolor="#f4f4de">
<H2>削除画面</H2>
<P align="right">
<FONT size="+1"><A href="ezml.cgi">戻る</A></FONT>
</P>
<BODY>
削除する記事をチェックして送信して下さい
<BR>
<FORM action="ezml.cgi" method="POST">
<INPUT type="hidden" name="action" value="sakujo">
<INPUT type="hidden" name="password" value="$in{'password'}">
<INPUT type="submit" value="削除する"> <INPUT type="reset" value="Reset"><BR><BR>
EOM

	if(!open(OUT,"$file")){&error(err_fail);}
	flock(OUT,2);
	@DATA = <OUT>;
	flock(OUT,8);
	close(OUT);

	$count = @DATA;
	$i = 0;
	while($count > 0){
		($cnt,$date,$name,$mail,$url,$dai,$comment,$remt_h,$remt_ad) = split(/\,/,$DATA[$i]);
		$DATA[$i] =~ s/<BR>/&lt;BR&gt;/g;
		print "<INPUT type=\"checkbox\" name=\"delete\" value=\"$cnt\">【No.$cnt】$DATA[$i]<BR>\n";
		$i ++;
		$count --;
	}

print <<EOM;
</FORM>
</BODY>
</HTML>
EOM
}

# 削除サブルーチン
sub delete{
	if(!open(OUT,"$file")){&error(err_fail);}
	flock(OUT,2);
	@DATA = <OUT>;
	flock(OUT,8);
	close(OUT);

	$count = @DATA;

	@code = split(/\0/,$in{'delete'});
	$countcode = @code;

	$i = 0;
	$j = 0;

	while(($count > 0) || ($countcode > $j)){
	($cnt,$date,$name,$mail,$url,$dai,$comment,$remt_h,$remt_ad) = split(/\,/,$DATA[$i]);
	
		if($cnt eq $code[$j]){
			$DATA[$i] = '';
			$j ++;
		}
	
		$i ++;
		$count --;
	}


	if(!open(TXT,">$file")){&error(err_fail);}
	flock(TXT,2);
	print TXT @DATA;
	flock(TXT,8);
	close(TXT);
}

# cookieの取得サブルーチン
sub CookieCutter {
	foreach(split(/; /,$ENV{'HTTP_COOKIE'})){
		($key,$value) = split(/=/);
		if ($key eq $cookie){
			$cookieJar{$cookie} = $value;
		}
	}
	@LOG = $cookieJar{$cookie};
	foreach $line (@LOG){
		($cookie_name,$cookie_mail,$cookie_url) = split(/\,/,$line)
	}
	$cookie_urlnew = substr($cookie_url,7);
}

# cookieセットサブルーチン
sub SetCookie{
	if ($in{'action'} eq 'kakikomi'){
		@new_cookie = ($in{'name'},$in{'mail'},$in{'url'});
		($cookie_name,$cookie_mail,$cookie_url) = @new_cookie;
	}
	print "Set-Cookie: ";
	print "$cookie=$cookie_name,$cookie_mail,$cookie_url; ";
	print "expires=$cookieExpires;\n";
}

# cookieの有効期限を設定するサブルーチン
sub expires {
    local($day) = @_;
    local(@date);
    local(@week) = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
    local(@month) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

    @date = gmtime(time + $day * 60 * 60 * 24);

    $date[5] = $date[5] + 1900;

    foreach (0..3) {
	$date[$_] = sprintf("%.2d",$date[$_]);
    }

    "$week[$date[6]], $date[3]-$month[$date[4]]-$date[5] $date[2]:$date[1]:$date[0] GMT";
}

# メール送信サブルーチン
sub mail{

	$dai_new =~ s/&amp;/&/g;
	$dai_new =~ s/&lt;/</g;
	$dai_new =~ s/&gt;/>/g;

$message = <<END_OF_MASSAGE;
このメールに心当たりのない方は恐れ入りますが
管理者<$myaddress>までお知らせ下さい。
=======================================================
\[No.$cnt1\] 投稿者:\[$in_name\]
Subject:\[$dai_new\]

\[Comments\]
$mail_comment
=======================================================
[重要]返信投稿は下記URLのブラウザ上でのみ出来ます
$cgi_url
END_OF_MASSAGE

	&jcode'convert(*message,"jis");
	$jis_dai = $dai_new;
	&jcode'convert(*jis_dai,"jis");

	if(!open(OUT,"$mailfile")){&error(err_fail);}
	flock(OUT,2);
	@MAILDATA = <OUT>;
	flock(OUT,8);
	close(OUT);


	$count_mail = @MAILDATA;

	if($count_mail > 0){
		foreach $line(@MAILDATA){
			($mailaddress,$mail_name) = split(/\,/,$line);
			if(($mailaddress =~ /\\/)||($mailaddress =~ /\040/)||($mailaddress =~ /\[/)||($mailaddress =~ /\]/)||($mailaddress =~ /\#/)||($mailaddress =~ /\!/)||($mailaddress =~ /\//)||($mailaddress =~ /\%/)||($mailaddress =~ /\&/)){
				next;
			}
  		 	open(MAIL, "|$sendmail -t -f '$myaddress'");
 		  	print(MAIL "From: $mail_from <$myaddress>\n");
  			print(MAIL "To: $mailaddress\n");
			print(MAIL "Reply-To: $myaddress\n");
			print MAIL "MIME-Version: 1.0\n";
			print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
			print MAIL "Content-Transfer-Encoding: 7bit\n";
   			print(MAIL "Subject: [$mail_title-$cnt1]$jis_dai\n\n");
			print MAIL "$message";
			close(MAIL);
		}
	}
}

# メーリングリスト登録フォームHTMLサブルーチン
sub register_form{
print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD>
<META name="GENERATOR" content="IBM HomePage Builder V3.0  for Windows">
<TITLE>$titleメーリングリスト登録</TITLE>
</HEAD>

<BODY bgcolor="#F7F7E0">

<H2 align="center"><FONT color="#0000ff">$title</FONT><BR>
メーリングリスト登録</H2>
<HR width="80%">
<P align="center">
<FONT size="+1">この掲示板に投稿された内容を、メールで受け取ることができます。<BR>
ただし、受け取ったメールから返信投稿するときは、この掲示板の<B>フォームを使って</B>投稿して下さい。</FONT>
</P>
<CENTER>
<TABLE border="1" bgcolor="#ffffff">
  <TR>
    <TD><B><FONT color="#0000ff">登録の方法</FONT></B><BR>
    <UL>
      <LI>この下のフォームに、必要事項を記入の上、「登録する」にチェックして送信して下さい。
    </UL>
<BR>
<B><FONT color="#0000ff">メーリングリストから削除する方法</FONT></B><BR>
    <UL>
      <LI>この下のフォームに、メールアドレスを記入の上、「リストから削除」にチェックして送信して下さい。
      <LI>以後、メール送信されなくなります。
    </UL>
</TD></TR>
</TABLE>

</CENTER>
<P>
<BR>
</P>
<CENTER>
<TABLE>
  <TR>
    <TD nowrap>
    <FORM action="ezml.cgi" method="POST">
    <INPUT type="hidden" name="action" value="touroku">
<B>お名前：</B><INPUT name="touroku_name" size="25"><BR>
<B>メールアドレス：</B><INPUT name="touroku_mail" size="35"><FONT size="-1">（半角英数字使用）</FONT><BR>
<BR>
<INPUT type="radio" name="touroku" value="touroku" checked><B>登録する　</B>
<INPUT type="radio" name="touroku" value="sakujo"><B>リストから削除</B><BR>
<BR>
<INPUT type="submit" value="送信する">　<INPUT type="reset" value="Reset">
    </FORM>
</TD></TR>
</TABLE>

</CENTER>
<P>
<FONT size="+1"><A href="ezml.cgi">戻る</A></FONT>
</P>
</BODY>
</HTML>
EOM
}

# メールリスト登録・削除サブルーチン
sub touroku{
if($in{'touroku_mail'} !~ /[a-zA-Z0-9\-_]\@.*[a-z0-9\-_]\.[a-z0-9\-_]/){
	&error(mail_er);
}else{
	$touroku_name = $in{'touroku_name'};
	&jcode'convert(*touroku_name,"sjis");
	if(!open(OUT,"$mailfile")){&error(err_fail);}
	flock(OUT,2);
	@MAILDATA = <OUT>;
	flock(OUT,8);
	close(OUT);

if($in{'touroku'} eq "touroku"){

	$touroku = "yes";
	$i = 0;
	foreach $line (@MAILDATA){
		($mail_address,$mail_name) = split(/\,/,$line);
		if ($mail_address eq $in{'touroku_mail'}){
			$touroku = "no";
			last;
		}
		$i ++;
	}

	if($touroku eq "yes"){
		$mailnew_data = "$in{'touroku_mail'},$touroku_name\n";
		push(@MAILDATA,$mailnew_data);
		print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD>
<TITLE>登録いたしました。</TITLE>
<META name="GENERATOR" content="IBM HomePage Builder V3.0  for Windows">
</HEAD>
<BODY bgcolor="#F7F7E0">
<H2 align="center">$touroku_name様<BR>
メールリストに登録いたしました。</H2>
<HR>
<CENTER>
<TABLE>
  <TR>
    <TD><FONT size="+1"><B>登録内容：<BR>
<BR>
</B></FONT>登録名；$touroku_name<BR>
登録メールアドレス；$in{'touroku_mail'}<BR>
</TD></TR>
</TABLE>
</CENTER>
<P>
<A href="ezml.cgi"><FONT size="+1">戻る</FONT></A>
</P>
</BODY>
</HTML>
EOM
	}else{
		&error(mail_another);
	}
}elsif($in{'touroku'} eq "sakujo"){
	$sakujo = "no";
	$i = 0;
	
	foreach $line (@MAILDATA){
		($mail_address,$mail_name) = split(/\,/,$line);
		if ($mail_address eq $in{'touroku_mail'}){
			$sakujo = "yes";
			last;
		}
		$i ++;
	}

	if($sakujo eq "yes"){
		$MAILDATA[$i] = '';
print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD>
<TITLE>削除いたしました。</TITLE>
<META name="GENERATOR" content="IBM HomePage Builder V3.0  for Windows">
</HEAD>
<BODY bgcolor="#F7F7E0">
<H2 align="center">$mail_name様<BR>
メールリストから削除いたしました。</H2>
<HR>
<CENTER>
<TABLE>
  <TR>
    <TD><FONT size="+1"><B>削除内容：<BR>
<BR>
</B></FONT>削除名；$mail_name<BR>
削除メールアドレス；$mail_address<BR>
</TD></TR>
</TABLE>
</CENTER>
<P>
<A href="ezml.cgi"><FONT size="+1">戻る</FONT></A>
</P>
</BODY>
</HTML>
EOM
	}
	if($sakujo eq "no"){
print "Content-type: text/html\n\n";
print <<EOM;
<HTML>
<HEAD>
<TITLE>削除できません</TITLE>
<META name="GENERATOR" content="IBM HomePage Builder V3.0  for Windows">
</HEAD>
<BODY bgcolor="#F7F7E0">
<H2 align="center">
メールリストから削除できませんでした<BR>
今、入力されたメールアドレスはリストにありませんでした。</H2>
<HR>
<CENTER>
<TABLE>
  <TR>
    <TD><FONT size="+1"><B>入力内容：
<BR>
</B></FONT>
メールアドレス；$in{'touroku_mail'}<BR>
</TD></TR>
</TABLE>
管理者まで<A HREF="mailto:$myaddress">メール</A>を下さればお調べいたします
</CENTER>
<P>
<A href="ezml.cgi"><FONT size="+1">戻る</FONT></A>
</P>
</BODY>
</HTML>
EOM
	}

}
	if(!open(IN,">$mailfile")){&error(err_fail);}
	flock(IN,2);
	print IN @MAILDATA;
	flock(IN,8);
	close(IN);
}
}

# エラーサブルーチン
sub error{
	$error = $_[0];
	if ($error eq "name_er"){
		$msge = '名前が正しく記入されていません';
	}elsif($error eq "comment_er"){
		$msge = 'コメントが正しく記入されていません';
	}elsif($error eq "mail_er"){
		$msge = 'メールアドレスが正しく記入されていません';
	}elsif($error eq "err_res"){
		$msge = '返信投稿のもとの記事が見つかりません。<BR>レス番号を確認して下さい。<BR>番号は半角数字です。';
	}elsif($error eq "err_dai"){
		$msge = 'タイトルを記入して下さい';
	}elsif($error eq "err_fail"){
		$msge = 'ファイルオープンできません';
	}elsif($error eq "mail_another"){
		$msge = 'このメールアドレスは既に登録されています';
	}else{
		$msge = 'パスワードが違います';
	}

	print "Content-type: text/html\n\n";
	print "<HTML><HEAD><TITLE>ERROR</TITLE></HEAD>\n";
	print "<BODY bgcolor=\"#ffffff\">\n";
	print "<H1 align=\"center\">$msge</H1><HR>\n";
	print "<A href=\"javascript:history.back()\">BACK</A></BODY></HTML>\n";

	exit;
}





