#!/usr/bin/perl

#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#
#        ☆　Crux 1.00　☆
#
#        kz island (keiko)
#        http://www.kz-island.net/
#
#
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#
#    ◆必要なファイル
#      ・crux.cgi[755]
#      ・jcode.pl[755]
#      ・crux.log（ログ保存用）[666]
#      ・link.txt（自動リンク機能を使う場合に必要）[666]
#
#━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

################### 初期設定 ここから ################################

#日本語変換ライブラリ
require "jcode.pl";

#管理人の名前
$me = "Tetish";

#パスワード
$pass = "8126";

#戻り先URL
$home = "http://www.tetish.com/";

#このファイル名
$file = "crux.cgi";

#ログ用ファイル名
$newfile = "crux.log";

#タイトル
$title= "What's New ?";

#色1（フォアカラー）
$color = "#9999CC";

#色2（バックカラー）
$color2 = "#EEEEEE";

#背景色
$bgcolor = "#FFFFFF";

#入力欄の枠の太さ
$input_border = "0px";

#文字の大きさ（pt、px指定などができます。）
$font_size = "13px";

#テーブルの幅（px指定などができます。）
$tablewidth = "60%";

#背景画像
$bg = "";

#ログの最大保存数（あまり多すぎない方がいいです。）
$max = 20;

#１ページの最大表示数
$pagemax = 5;

#---------------------------------------------------------------------
#####   自動リンク機能   #####
#---------------------------------------------------------------------

#自動リンク機能を使う（使う：on 、使わない：off）
$link = "on";

#-自動リンク機能を使う場合-----------

#自動リンク設定ファイル名
$linkfile = "link.txt";

#自動リンクの目印
#更新履歴のコメント欄に「目印 + 設定ページ名」と書き込むと、
#自動リンクして表示します。
$symbol = "◆";

#---------------------------------------------------------------------
#####   その他設定   #####
#---------------------------------------------------------------------

#検索窓を表示するか
#表示する：on	表示しない:off
$search = "on";

#画面下に件数表示を表示するか
#表示する：on	表示しない:off
$kensu = "on";

#メソッド（get or post)
$method = "POST";


#---------------------------------------------------------------------
#####   スタイルシートの設定   #####
#---------------------------------------------------------------------
#スタイルシートがわかる人は適当に変更してください。

$style = <<"HTML";

<style type="text/css">
<!--
body,td {font-size: $font_size; font-family: "MS UI Gothic"; color : $color;}
a:link     {color:$color; text-decoration:none;}
a:visited  {color:$color; text-decoration:none;}
a:active   {color:#silver; text-decoration:none;}
a:hover    {color:#999999; text-decoration:underline;}
input,textarea{	
border-left:$input_border solid $color;
border-right:$input_border solid $color;
border-top:$input_border solid $color;
border-bottom:$input_border solid $color;
color:$color;background-color:$color2 ;
 }
-->
</style>

HTML

################### 初期設定 ここまで ################################

#-------！！！！！ここから先はいじらない方がいいです！！！！！--------

#バージョン
$version = "ver 1.00";

print "Content-type: text/html\n\n";

#------------------- フォームデコード --------------------------------

if ($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'});
} 
else { $formdata = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$formdata);
foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$value =~ s/\n//g;
	$value =~ s/\,/，/g;
	&jcode'convert(*value,'sjis');
	$FORM{$name} = $value;
}

#------------------- 配列にログの中身を代入 --------------------------

if (!open (DATA,"$newfile")) {	&error(bad_file);	}
@DATA = <DATA>;
close(DATA);

#------------------- 分岐 --------------------------------------------

if($FORM{'action'} eq "pass") {
	if ($FORM{'pass'} eq $pass) {	&edit_html;	}
	else {	&error(bad_pass);	} 
}
elsif($FORM{'action'} eq "edit$pass") {
	if ($FORM{'edit_mode'} eq "new_resist"){	&edit2;	&edit_html;	}
	elsif($FORM{'edit_mode'} eq "edit_resist"){	&resist;	&edit_html;	}
	elsif($FORM{'edit'} eq "編集"){	&edit; 	&edit_html;	}
	elsif($FORM{'delete'} eq "削除"){	&delete; 	&edit_html;	}
	elsif($FORM{'edit_mode'} eq "link_edit") {	&link_html;	}
	elsif($FORM{'edit_mode'} eq "link_resist") {	&link_resist;	&link_html;	}
	elsif($FORM{'edit_mode'} eq "delete_links") {	&delete_links;	&link_html;	}
	else{	&edit_html;	}
}
elsif($FORM{'action'} eq "search") {	&search;	}
else {	&main_html;	}

#---------------------------------------------------------------------
#####   メイン表示部   #####
#---------------------------------------------------------------------

sub main_html {

	#---------- ページモード ----------
	$pagemode = "pagemain";

	&header;

	print "<a href=$home>▲HOME</a>\n";
	print "<div align=\"center\">\n";
	print "<font face=\"Courier New\"><h3>$title</h3></font>\n";
	print "</div><br>\n";

	#---------- 検索窓 ----------
	if($search eq "on"){
		print "<div align=\"center\">\n";
		print "<form action=\"$file\" method=\"$method\">\n";
		print "<input type=\"hidden\" name=\"action\" value=\"search\">\n";
		print "<table border=\"0\" cellpadding=\"3\">\n";
		print "<tr><td><input type=\"text\" name=\"search_word\" size=\"13\"></td>\n";
		print "<td><input type=\"submit\" value=\"search\"></td></tr>\n";
		print "</table></form>\n";
		print "</div>\n";
	}

	&listview;

	print "<div align=\"right\">\n";
	print "<form action=\"$file\" method=\"$method\">\n";
	print "<input type=\"hidden\" name=\"action\" value=\"pass\">\n";
	print "<table border=\"0\" cellpadding=\"3\">\n";
	print "<tr><td><input type=\"password\" name=\"pass\" size=\"10\"></td>\n";
	print "<td><input type=\"submit\" value=\"$me用\"></td></tr>\n";
	print "</table></form>\n";
	print "</div>\n";

	&footer;
}

#---------------------------------------------------------------------
#####   編集表示部   #####
#---------------------------------------------------------------------

sub edit_html {

	#---------- エラー ----------
	if ($checkdel == 1 && $checkedit == 1){	&error("bad_edit");	}

	#---------- ページモード ----------
	$pagemode = "pageedit";

	&get_time;

	#---------- 新規書き込みと書き直し ----------
	if ($mode eq "edit")	{	
		$resist = "書き直し";
		$edit_mode = "new_resist";
	}
	else{
		$date2 = $date_now;	
		$subject2 = "";	
		$comment2 = "";
		$resist = "書き込み";
		$edit_mode = "edit_resist";

	}

	&header;

	if($mode eq "edit")	{	
		print "<a href=\"$file?action=edit$pass\">▲BACK</a>\n";
	}

	print "<div align=\"center\">\n";
	print "<font face=\"Courier New\"><h3>$title</h3></font>\n";
	print "</div>\n";
	print "<div align=\"center\">\n";
	print "<form action=\"$file\" method=\"$method\">\n";
	print "<input type=\"hidden\" name=\"action\" value=\"edit$pass\">\n";
	print "<input type=\"hidden\" name=\"edit_mode\" value=\"$edit_mode\">\n";

	if ($mode eq "edit"){
		print "<input type=\"hidden\" name=\"edit_num\" value=\"$num2\" size=\"30\">\n";
	}

	print "<table border=\"0\"><tr><td nowrap>日付 : </td>\n";
	print "<td><input type=\"text\" name=\"date\" value=\"$date2\" size=\"30\">\n";
	print "</td></tr>\n";
	print "<tr><td nowrap>題名 : </td>\n";
	print "<td><input type=\"text\" name=\"subject\" size=\"30\" value=\"$subject2\">\n";
	print "</td></tr>\n";
	print "<tr><td nowrap></td>\n";
	print "<td><textarea name=\"comment\" rows=\"6\" cols=\"55\">$comment2</textarea>\n";
	print "</td></tr>\n";
	print "<tr><td nowrap valign=\"top\"></td>\n";
	print "<td align=\"right\"><input type=\"submit\" value=\"$resist\" name=\"write\"></td></tr>\n";

	print "</table></form>\n</div><br>\n";

	if($mode ne "edit"){
		print "<div align=\"center\"><table border=\"0\"><tr>\n";
		print "<td><form action=\"$file\" method=\"$method\"><input type=\"submit\" value=\"管理を終了\"></form></td>\n";
		if($link eq "on"){
			print "<td><form action=\"$file\" method=\"$method\">\n";
			print "<input type=\"submit\" value=\"自動リンク設定\">\n";
			print "<input type=\"hidden\" name=\"action\" value=\"edit$pass\">\n";
			print "<input type=\"hidden\" name=\"edit_mode\" value=\"link_edit\">\n";
			print "</form></td>\n";
		}

		print "</tr></table></div>\n";

		&listview;
	}

	&footer;
}


#---------------------------------------------------------------------
#####   ログ表示   #####
#---------------------------------------------------------------------

sub listview {

	$count = @DATA;

	if($FORM{'page'} eq ""){	$log_start = 0;	$this_page = 1;}

	if($FORM{'back'} eq "BACK"){	
		$log_start = ($FORM{'page'} - 2) * $pagemax;
		$this_page = $FORM{'page'} - 1;
	}
	elsif($FORM{'next'} eq "NEXT"){	
		$log_start = $FORM{'page'} * $pagemax;
		$this_page = $FORM{'page'} + 1;
	}

	$log_count = 0;
	$log_sum = $log_start + $pagemax;


	foreach $line(@DATA) {

	if($log_count >= $log_sum){	last;	}

	if($log_count >= $log_start){

	($num,$date,$subject,$comment,$d1,$d2) = split(/\,/,$line);
	#そのうち消す。
	$comment =~ s/\r/<br>/g;
	#URLを判別してリンクをつける
	$comment =~ s/([^=^\"]|^)(http|ftp)([\w|\!\#\&\=\-\%\@\~\;\+\:\.\?\/]+)/$1<a href=\"$2$3\">$2$3<\/a>/g;

	#---------- 自動リンク機能 ----------
	if($link eq "on"){

		#---------- 配列にファイルの中身を代入 ----------
		if (!open (DB,"$linkfile")) { &error(bad_file2); }
		@DB = <DB>;
		close(DB);
		foreach $links(@DB) {
			($index,$url) = split(/\,/,$links);
			$index = $symbol . $index;
			if (index($comment,$index) >= 0) {
				$comment = substr($comment,0,index($comment,$index)) . "<a href=$url>$index</a>" . substr($comment,index($comment,$index) + length($index));
			}
		}
	}


	print "<div align=\"center\">\n";
	print "<table width=\"$tablewidth\" border=\"0\" cellpadding=\"3\" bordercolor=\"$color\" cellspacing=\"0\">\n";
	print "<tr bgcolor=\"$color\"><td>\n";
	print "<b><font color=\"$color2\">$date&nbsp;&nbsp;&nbsp;$subject</font></b></td></tr>\n";
	print "<tr bgcolor=\"$color2\"><td>$comment</td></tr>\n";
	if ($pagemode eq "pageedit"){
		print "<form action=\"$file\" method=\"$method\">\n";
		print "<input type=\"hidden\" name=\"action\" value=\"edit$pass\">\n";
		print "<tr bgcolor=\"$color2\" align=\"right\"><td>\n";
		print "<input type=\"hidden\" name=\"target_num\" value=\"$num\">\n";
		print "<input type=\"submit\" name=\"edit\" value=\"編集\">　\n";
		print "<input type=\"submit\" name=\"delete\" value=\"削除\">\n"; 
		print "</td></tr></form>\n";
	}
	print "</table></div><br><br><br>\n";
	}
	$log_count++;
	}

	if($pagemode eq "pageedit"){$action = "edit$pass";}
	else	{	$action = "pagemain"	}

	print "<div align=center>\n";
	print "<table border=0 width=$table_width>\n<tr>\n<td>\n";
	print "<div align=right>\n";
	print "<form action=\"$file\" method=\"$method\">\n";
	print "<input type=\"hidden\" name=\"action\" value=\"$action\">\n";
	print "<input type=hidden name=page value=$this_page>\n";
	if($log_start > 0){
		print "<input type=submit name=back value=BACK>\n";
	}
	if(($log_start + $pagemax) < $count){
		print "<input type=submit name=next value=NEXT>\n";
	}
	print "</form></div>\n</td>\n</tr>\n</table>\n</div>\n";


	#---------- 件数表示 ----------
	if($kensu eq "on" && $count != 0){
		$less = $log_start + 1;
		$most = $log_sum;
		if ($most >= $count){ $most = $count; }
		print "<p align=\"center\"><b>$less件〜$most件/$count件</b></p>\n";
	}

}

#---------------------------------------------------------------------
#####   自動リンク機能   #####
#---------------------------------------------------------------------

sub link_html {

	#---------- 配列にファイルの中身を代入 ----------
	if (!open (DB,"$linkfile")) { &error(bad_file2); }
	@DB = <DB>;
	close(DB);

	&header;

	print "<form action=\"$file\" method=\"method\">\n";
	print "<input type=\"submit\" value=\"管理画面に戻る\">\n";
	print "<input type=\"hidden\" name=\"action\" value=\"pass\">\n";
	print "<input type=\"hidden\" name=\"pass\" value=\"$pass\"></form>\n";
	print "<div align=\"center\">\n";
	print "<font face=\"Courier New\"><h3>$title</h3></font>\n";
	print "- 自動リンク設定 -\n";
	print "</div><br><br>\n";

	$linkcount = @DB;
	print "<p align=\"center\">\n";

	if($linkcount == 0){
		print " 自動リンクの設定をしてください。\n";
	}

	print "<p align=\"center\">「$symbol<b>ページ名</b>」というように書き込むと変換後のようにリンクを自動的に張って表\示します。<br>ただし、<font color=\"#ff3333\">コメント部分への書き込みのみ有効</font>です。題名、日付では適用されません。</p>\n";

	print "</p><br>\n";

	#---------- リンク追加 ----------
	print "<div align=\"center\">\n";
	print "<form action=\"$file\" method=\"$method\">\n";
	print "<input type=\"hidden\" name=\"action\" value=\"edit$pass\">\n";
	print "<input type=\"hidden\" name=\"edit_mode\" value=\"link_resist\">\n";
	print "<table border=\"0\" cellpadding=\"3\">\n";
	print "<tr><td>ページ名 : <input type=\"text\" name=\"linkname\" size=\"15\"></td>\n";
	print "<td>リンク先 : <input type=\"text\" name=\"linkurl\" size=\"20\"></td>\n";
	print "<td><input type=\"submit\" value=\"追加\"></td></tr>\n";
	print "</table></form>\n";
	print "</div>\n";

	print "<div align=\"center\">\n";
	print "<table border=\"2\" cellpadding=\"5\" bordercolor=\"$color\" cellspacing=\"0\">\n";
	print "<tr><td align=\"center\"><b>ページ名</b></td>\n";
	print "<td align=\"center\"><b>リンク先</b></td>\n";
	print "<td align=\"center\"><b>変換後</b></td>\n";
	print "<td align=\"center\"><b>削除</b></td>\n";
	print "</tr>\n";

	#---------- 設定状況の表示 ----------
	$i = 0;
	foreach $links(@DB) {
		($index,$url) = split(/\,/,$links);
		print "<form><tr><td>$index</td><td>$url</td>\n";
		print "<td><a href=\"$url\">$symbol$index</a></td>\n";
		print "<td><input type=\"hidden\" name=\"linknum\" value=\"$i\">\n";
		print "<input type=\"hidden\" name=\"action\" value=\"edit$pass\">\n";
		print "<input type=\"hidden\" name=\"edit_mode\" value=\"delete_links\">\n";
		print "<input type=\"submit\" name=\"delete_links\" value=\"削除\"></td>\n";
		print "</tr></form>\n";
		$i++;
	}

	print "</table></div><br><br>\n";

	&footer;
}


#---------------------------------------------------------------------
#####   サーチ機能   #####
#---------------------------------------------------------------------

sub search {

	if ($FORM{'search_word'} eq ""){&error("bad_search");}

	#---------- 一致する記事を見つけ、配列に代入 ----------
	$i = 0;
	foreach $_(@DATA) {
		if (index($_,$FORM{'search_word'}) >= 0) {
			$itti[$i] = $_;
			$i++;
		}
	}

	$count = @DATA;

	$itti_count = @itti;


	&header;

	print "<a href=\"$file\">▲BACK</a>\n";
	print "<div align=\"center\">\n";
	print "<font face=\"Courier New\"><h3>$title</h3></font>\n";
	print "</div><br>\n";

	print "<p align=\"center\">\n";

	#---------- 一致するものがなければ終了 ----------
	if($itti_count == 0){
		print "「<b>$FORM{'search_word'}</b>」に一致した記事はありません。</p>\n";
		&footer;
	}

	print "「<b>$FORM{'search_word'}</b>」に$count件中$itti_count件一致しました。</p>";

	foreach $_(@itti) {

		($num,$date,$subject,$comment,$d1,$d2) = split(/\,/,$_);

		#---------- コメント処理（改行、リンク） ----------
		$comment =~ s/\r/<br>/g;
		$comment =~ s/([^=^\"]|^)(http|ftp)([\w|\!\#\&\=\-\%\@\~\;\+\:\.\?\/]+)/$1<a href=\"$2$3\">$2$3<\/a>/g;

		#---------- 自動リンク処理 ----------
		if($link eq "on"){
			if (!open (DB,"$linkfile")) {	&error(bad_file2);	}
			@DB = <DB>;
			close(DB);
			foreach $links(@DB) {
				($index,$url) = split(/\,/,$links);
				$index = $symbol . $index;
				if (index($comment,$index) >= 0) {
					$comment = substr($comment,0,index($comment,$index)) . "<a href=$url>$index</a>" . substr($comment,index($comment,$index) + length($index));
				}

			}
		}

		print "<div align=\"center\">\n";
		print "<table width=\"$tablewidth\" border=\"2\" cellpadding=\"3\" bordercolor=\"$color\" cellspacing=\"0\">\n";
		print "<tr bgcolor=\"$color\"><td>\n";
		print "<b><font color=\"$color2\">$date&nbsp;&nbsp;&nbsp;$subject</font></b></td></tr>\n";
		print "<tr bgcolor=\"$color2\"><td>$comment</td></tr>\n";
		print "</table></div><br><br><br>\n";

	}

	&footer;

}


#---------------------------------------------------------------------
#####   ヘッダー   #####
#---------------------------------------------------------------------

sub header {

print<<"HTML";
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=x-sjis">
<title>$title</title>
$style
</head>
<body text="$color" link="$color" vlink="$color" alink="$color" bgcolor="$bgcolor" background="$bg">
HTML

}

#---------------------------------------------------------------------
#####   フッター   #####
#---------------------------------------------------------------------

sub footer {

print<<"HTML";
<p align="right">
<a href="http://www.kz-island.net/" target="_blank">☆Crux $version by kz island</a>
</p></body></html>
HTML
	exit;

}

#---------------------------------------------------------------------
#####   書き込み   #####
#---------------------------------------------------------------------

sub resist {

	#---------- 書き込みがなかったらエラー ----------
	if($FORM{'date'} eq "" || $FORM{'subject'} eq "" || $FORM{'comment'} eq ""){
		if ($FORM{'date'} eq ""){$bad_write[0] = 1;}
		if ($FORM{'subject'} eq ""){$bad_write[1] = 1;}
		if ($FORM{'comment'} eq ""){$bad_write[2] = 1;}
		&error(bad_write);
	}

	$count = @DATA;

	#---------- 改行をタグに ----------
	$FORM{'comment'} =~ s/\r/<br>/g;

	#---------- 配列に新しい記事を加える ----------
	$value = "$count\,$FORM{'date'}\,$FORM{'subject'}\,$FORM{'comment'}\,\,\n";
	unshift(@DATA,$value);

	#---------- （最大保存数×1.2）を越えたら削除し、順番をそろえる ----------
	if ($count > ($max * 1.2)){
		splice(@DATA,$max,$count);

		$count = @DATA - 1;

		#---------- ここで順番をそろえる ----------
		foreach $line(@DATA) {
			($num,$date,$subject,$comment,$d1,$d2) = split(/\,/,$line);
			$value = "$count\,$date\,$subject\,$comment\,\,\n";
			$line = $value;
			$count--;
		}
	}


	#---------- ファイルに書き込み ----------
	if (!open (DATA,">$newfile")) { &error(bad_file); }
	print DATA @DATA;
	close(DATA);
}

#---------------------------------------------------------------------
#####   削除   #####
#---------------------------------------------------------------------

sub delete{

	if($FORM{'target_num'} eq ""){	&error(bad_access);}

	$count = @DATA;

	$target_num = $count - $FORM{'target_num'} - 1;

	splice(@DATA,$target_num,1);

	$count = @DATA - 1;

	#---------- 順番をそろえる ----------
	foreach $line(@DATA) {
		($num,$date,$subject,$comment,$d1,$d2) = split(/\,/,$line);
		$value = "$count\,$date\,$subject\,$comment\,\,\n";
		$line = $value;
		$count--;
	}

	#---------- 書き込み ----------
	if (!open (DATA,">$newfile")) { &error(bad_file); }
	print DATA @DATA;
	close(DATA);

}

#---------------------------------------------------------------------
#####   編集１   #####
#---------------------------------------------------------------------

sub edit{

	if($FORM{'target_num'} eq ""){	&error(bad_access);}

	$count = @DATA;
	$target_num = $count - $FORM{'target_num'} - 1;

	#---------- 編集する記事を見つける ----------
	($num2,$date2,$subject2,$comment2,$d12,$d22) = split(/\,/,$DATA[$target_num]);
	$mode ="edit";
	$checkedit = 0;
	$comment2 =~ s/<br>/\r/g;

}

#---------------------------------------------------------------------
#####   編集２   #####
#---------------------------------------------------------------------

sub edit2{

	#---------- 書き込みがなかったらエラー ----------
	if($FORM{'date'} eq "" || $FORM{'subject'} eq "" || $FORM{'comment'} eq ""){
		if ($FORM{'date'} eq ""){$bad_write[0] = 1;}
		if ($FORM{'subject'} eq ""){$bad_write[1] = 1;}
		if ($FORM{'comment'} eq ""){$bad_write[2] = 1;}
		&error(bad_write);
	}

	$target_num = $count - $FORM{'edit_num'} - 1;

	#--------- 改行をタグに変換 ----------
	$FORM{'comment'} =~ s/\r/<br>/g;

	#---------- 編集する記事を見つけて書き込む ----------
	$DATA[$target_num] = "$FORM{'edit_num'}\,$FORM{'date'}\,$FORM{'subject'}\,$FORM{'comment'}\,\,\n";

	#---------- 書き込み ----------
	if (!open (DATA,">$newfile")) { &error(bad_file); }
	print DATA @DATA;
	close(DATA);
}

#---------------------------------------------------------------------
#####   リンク設定の書き込み   #####
#---------------------------------------------------------------------

sub link_resist {

	#---------- 書き込みがなかったらエラー ----------
	if($FORM{'linkname'} eq "" || $FORM{'linkurl'} eq ""){
		if ($FORM{'linkname'} eq ""){$bad_linkwrite[0] = 1;}
		if ($FORM{'linkurl'} eq ""){$bad_linkwrite[1] = 1;}
		&error(bad_linkwrite);
	}

	#---------- 配列にファイルの中身を代入 ----------
	if (!open (DB,"$linkfile")) { &error(bad_file2); }
	@DB = <DB>;
	close(DB);

	#---------- 配列に加える ----------
	$value = "$FORM{'linkname'}\,$FORM{'linkurl'}\n";
	push(@DB,$value);

	#---------- 書き込み ----------
	if (!open (DB,">$linkfile")) { &error(bad_file2); }
	print DB @DB;
	close(DB);

}

#---------------------------------------------------------------------
#####   リンク設定の削除   #####
#---------------------------------------------------------------------

sub delete_links {

	if($FORM{'linknum'} eq ""){	&error(bad_access);	}

	#---------- 配列にファイルの中身を代入 ----------
	if (!open (DB,"$linkfile")) { &error(bad_file2); }
	@DB = <DB>;
	close(DB);

	splice(@DB,$FORM{'linknum'},1);

	#---------- 書き込み ----------
	if (!open (DB,">$linkfile")) { &error(bad_file2); }
	print DB @DB;
	close(DB);

}

#---------------------------------------------------------------------
#####   エラー処理   #####
#---------------------------------------------------------------------

sub error {
	$error = $_[0];
	if ($error eq "bad_pass") {
		$msg[0] = "パスワードが違います。";
	}
	if ($error eq "bad_file") {
		$msg[0] = "ファイルがオープンできません。";
		$msg[1] = "ログ保存ファイル、『<b>$newfile</b>』 がないか、ファイルが開けません。";
	}
	if ($error eq "bad_file2") {
		$msg[0] = "ファイルがオープンできません。";
		$msg[1] = "自動リンク設定ファイル、『<b>$linkfile</b>』 がないか、ファイルが開けません。";
	}
	if ($error eq "bad_edit") {
		$msg[0] = "編集・削除対象がチェックされてません。";
		$msg[1] = "編集・削除したいもののチェックボックスにチェックを入れてください。";
	}
	if ($error eq "bad_search") {
		$msg[0] = "検索文字が入力されていません。";
	}
	if ($error eq "bad_write"){
		if($bad_write[0] == 1) { $msg[0] = "日付が入力されていません。";}
		if($bad_write[1] == 1) { $msg[1] = "題名が入力されていません。";}
		if($bad_write[2] == 1) { $msg[2] = "コメントが入力されていません。";}
	}
	if ($error eq "bad_linkwrite"){
		if($bad_linkwrite[0] == 1) { $msg[0] = "ページ名が入力されていません。";}
		if($bad_linkwrite[1] == 1) { $msg[1] = "リンク先が入力されていません。";}
	}
	if ($error eq "bad_edidel") {
		$msg[0] = "ひとつの記事の編集・削除の両方にチェックが入っています。";
	}
	if ($error eq "bad_access") {
		$msg[0] = "無効なアクセスです。";
	}

	&header;

	print "<div align=\"center\"><br><br><br>\n";
	print "<p><font size=\"+1\"><b>error</b></font></p>\n";

	for($i=0; $i<3; $i++){	print "<p>$msg[$i]</p>\n";	}

	print "<p><br><a href=$file>▲BACK</a></p>\n";
	print "</div>\n";

	&footer;
}

#---------------------------------------------------------------------
#####   日付と時刻   #####
#---------------------------------------------------------------------

sub get_time {

$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
	$year = sprintf("%02d",$year + 1900);
	$month = sprintf("%02d",$mon + 1);
	$mday = sprintf("%02d",$mday);
	if ( substr($month,0,1) == 0 )	{	$month =~ s/0/ /;	}
	if ( substr($mday,0,1) == 0 )	{	$mday =~ s/0/ /;	}
	$hour = sprintf("%02d",$hour);
	$min = sprintf("%02d",$min);
	$sec = sprintf("%02d",$sec);
	$youbi = ('日','月','火','水','木','金','土') [$wday];
	$date_now = "$year年$month月$mday日($youbi)";

}

