#!/usr/bin/perl

#───── bookmark Ver.3 ─────

# 個人で使用する場合の改造は構いませんが、再配布する場合は連絡をして下さい。
# バグ等、何かありましたら、サイト内にあるサポート掲示板までお願いします。
# lockフォルダはお手数ですが、各自で作成して一緒にアップして下さい。
# 設置に関してはHPで説明していますので、そちらを参照して下さい。

#───── パーミッション ─────

# 必ずプロバイダーの指示に従って下さい。
# 特に指定がなければ下の通りにして下さい。

# bookmark.cgi [755]
# bookmark2.cgi [666]
# jcode.pl [644]
# lock [777]←排他制御用フォルダ。mkdir関数使用時のみ必要です

# ─────　初期設定　─────

# CGIファイル
$cgifile = './link.cgi';

# 記録ファイル
$logfile = './bookmark2.cgi';

# 戻り先のURL
$home='../index.html';

# タイトル
$title = 'リンク集';

# タイトルの文字の大きさ(単位なし)
$size = "6";

# タイトルの文字色
$color = "#9999ff";

# タイトル画像のURL
# 使わない場合は「$title_img = '';」と設定して下さい
$title_img = '';

# 登録サイト表示欄の横幅(単位は％)
$width = '99%';

# 登録サイト表示欄の背景色
$t_bgcolor = '#ffffff';

# カテゴリーの表示方法
# セレクトボックスで表示=1、横１列で表示=0
$c_select = '1';

# bodyタグ
$body = '<body bgcolor="#ffffff" >';

# 最大記事保存数(超過すると「登録出来ません」というメッセージが出ます)
$max = '1000';

# 最大記事表示数(管理モードで反映されます)
$pagemax = '100';

# 管理用パス(必ず設定して下さい) 
$adpass = 'gvq6mwh6';

# 排他制御(ファイルロック)の設定
# flock関数を使う=2、mkdir関数を使う=1、使わない場合=0
# flock関数でエラーが発生した場合は、mkdir関数を御使用下さい。
# 「混雑しています」が度々表示される場合は外して下さい
# mkdir関数を使う場合は必ずlockフォルダを一緒にアップして下さい
$filelock = '2';

# ファイルロックの名称(mkdir関数を使う場合に必要。変更の必要なし)
$lockdir = './lock/bookmark.lock';

# アクセスを制限したいIP、またはホストを記述して下さい
# IPの場合、"123.456.78.90"を"123.456.78.*"と変えて記述します
# ホストの場合、"popxx.garden.ne.jp"を"*.garden.ne.jp"と変えて記述します
# 例→@stop = ("123.456.78.*","*.garden.ne.jp");
@stop = ("");

# スタイルシート(判る方は自由に変更して下さい)
# 「h1」はカテゴリー表示欄の部分(背景色、文字の大きさ、文字色等)、
# 「h2」は新規投稿画面、エラー表示画面、管理モード等の見出しの部分、
# 「ts」は枠線、「bs」はボタン、記入欄等を設定しています。
$style = '<STYLE type="text/css">
<!--
body,tr,td,th { 
	font-size: 14px;
	line-height: 160%;
	margin: 0px;
	padding: 0px;
	background-color: #F5F5F5;

 }
a{ }
a:hover{ }



h1 {
	background-color: #F5F5F5;
	font-size:14px;
	padding: 1px;
	margin: 0px;
	border-bottom: 1px solid #666666;
	color: #666666;
}
h2 {
	background-color: #666666;
	color: #ffffff;
	font-size: 14px;
	margin: 0px;
	padding: 2px;
}

.ts{
	background-color : #ffffff;
	font-size : 10pt;
	color : #003366;
	border: 1px solid #CCCCCC;
}

.bs{
	background-color : #ffffff;
	font-size : 10pt;
	color : #003366;
	border: 1px solid #666666;
}
-->
</STYLE>';

# 日本語コード変換ライブラリ(変更の必要なし)
 require './jcode.pl';

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

	$hos = $ENV{'REMOTE_HOST'};
	$addr = $ENV{'REMOTE_ADDR'};

	if ($gethostbyaddr) {
		if ($hos eq "" || $hos eq "$addr") {
			$hos = gethostbyaddr(pack("C4", split(/\./, $addr)), 2);
		}
	}
	if ($hos eq "") { $hos = $addr; }

 foreach $ipline (@stop) {
   if ($ipline eq "") { next;}
   s/\*/\.\*/g;
     if ($hos =~ /$ipline/i) { &error("アクセスが制限されています");}
     if ($addr =~ /$ipline/i) { &error("アクセスが制限されています");}
 }

 &get_time;

 if ($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
 } else { $buf = $ENV{'QUERY_STRING'}; }
 @buf = split(/&/, $buf);
 foreach (@buf) {
	($key, $val) = split(/=/);
	$val =~ tr/+/ /;
	$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

	&jcode'convert(*val, "sjis");

	$val =~ s/</&lt;/g;
	$val =~ s/>/&gt;/g;
 $val =~ s/"/&quot;/g;
 $val =~ s/,/&#44;/g;

	$in{$key} = $val;
 }

$header2 = "
<html>
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=shift_jis\">
<meta http-equiv=\"Content-Style-Type\" content=\"text/css\">
<title>$title</title>
 $style
</head>
 $body 
［<a href=\"$cgifile?mode=top\">トップに戻る</a>］
<br><br>
";
 
$fotter = '

  </div>
  <div class="clr"></div> 
</div>

<div class="clr"></div>
</div>
</div>

<div id="foot">
  <div id="foot-area">
    <div id="foot-text">総和建設　300-0135　茨城県かすみがうら市加茂5303-14　TEL:029-828-1415</div>
    
   <div id="foot-subtext">
    <div class="float-left">Copyright (C) 2010 セレスホーム・ソウワ All Rights Reserved.</div>
    <div class="float-right"><a href="../c_policy.html">免責事項・プライバシーポリシー</a></div>
    <div class="clr"></div>
   </div>
  </div>
  
  <div class="clr"></div>
</div>

</body>
</html>





';

 if ($in{'mode'} eq "regist") { &regist;}
 elsif ($in{'mode'} eq "regist2") { &regist2;}
 elsif ($in{'mode'} eq "regist3") { &regist3;}
 elsif ($in{'mode'} eq "form") { &form;}
 elsif ($in{'mode'} eq "change") { &change;}
 elsif ($in{'mode'} eq "delete") { &delete;}
 elsif ($in{'mode'} eq "category") { &category;}
 elsif ($in{'mode'} eq "search") { &search;}
 elsif ($in{'mode'} eq "password") { &password('管理モード');}
 elsif ($in{'mode'} eq "top") { print "Location: $cgifile" . '?' . "\n\n";}

 if ($filelock == 1){ &lock;}
	&input;
 if ($filelock == 1){ &unlock;}

 for ($i = 0; $i < @data; $i++) {
 chomp $data[0];
 @genre = split(/<>/,$data[0]);
 last;
 }

 &header;

# print "</div>\n<br clear=\"all\">\n";

 $g_flag = 0;
 foreach $genreline(@genre) {
   $g_flag ++ ;
   $category = $genreline;

	  print "<tr><td colspan=\"2\">\n";
   print "<h6>$category</h6>\n";
   print "<DIV class='link-list'>\n";


     foreach $newline(@data) {
       local($site,$url,$name,$comment,$date,$no) = split(/<>/,$newline);
          if ($g_flag == $no ) { 

            $site = "<a href=\"$url\" target=\"_blank\" title=\"$site\"><b>$site</b></a>"; 
              print "$site\n";
	             print "<BR>&nbsp;$comment $name<BR>\n";
          }
       }

   print "</DIV>\n";
   }

 
 #print "<br clear=\"all\">\n";

 print "$fotter\n";

 exit;

sub header {	

print <<"EOM";
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title>セレスホームソウワ</title>
<link href="../base.css" rel="stylesheet" type="text/css">
<script src="../Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
</head>

<body>
<div id="container">
<div id="content">
<div>
  <div id="logo"><a href="../index.html"><img src="../img/logo.jpg" alt="セレスホーム　ソウワ" width="540" height="60"></a>
   <div id="head-text">　     かすみがうら市の地域密着型の工務店。注文住宅からローコスト住宅まで丁寧に対応します</div>
  </div>
  <div class="float-right"><img src="../img/tel.jpg" alt="" width="200" height="39"><br>
    <a href="../ask/ask.html"><img src="../img/ask.jpg" alt="お問い合わせ" width="200" height="21"></a></div>
  
  <div class="clr"></div>
</div>
<div id="main">
  <div id="menu-area">
  <div><img src="../img/menu-up.jpg"></div>
  
    <ul id="menu">
      <li><a href="../c_order_0.html">健康住宅</a></li>
      <li><a href="c_order_1.html">お客様の声</a></li>
     <li><a href="../c_low-cost_0.html">ローコスト住宅</a></li>
     <li><a href="../c_reform.html">リフォーム</a></li>
     <li><a href="../c_guarantee.html">安心保証制度</a></li>
     <li><a href="../c_area.html">対応地域</a></li>
     <li><a href="../c_company.html">会社概要</a></li>
    </ul>
    <div></div>
    <img src="../img/menu-bg.jpg" width="200" height="40"><a href="../index.html"><img src="../img/menu-home.jpg" alt="ホーム" width="200" height="18"></a><a href="link.cgi"><img src="../img/menu-link.jpg" alt="リンク" width="200" height="18"></a>
    <div><img src="../img/menu-dn.jpg"></div>
    
  </div>
  <div id="principal">
   <h1>リンク</h1>

 $body

EOM



 if ($title_img ne "") {
    print "<img src=\"$title_img\" border=\"0\">\n";
 } else {
#   print "<font size=\"$size\" color=\"$color\">$title</font>\n";
 }
#   print "<br clear=\"all\">\n";
}

sub check {	
	if ($in{'site'} eq "") { &error("サイト名が記入されていません"); }
	if ($in{'url'} eq "http://") 	{ &error("URLが記入されていません"); }
	if (($in{'url'} eq "") || ($in{'url'}!~ /http:\/\/.+\..+/)) { &error("URLが正しく入力されていません"); }

	$in{'comment'} =~ s/\r\n/<br>/g;
	$in{'comment'} =~ s/\r/<br>/g;
	$in{'comment'} =~ s/\n/<br>/g;
}

sub regist {
	local($site,$url,$name,$comment,$date,$no,$data2,@data,@new);

	if (($in{'adpass'} ne $adpass) || ($in{'adpass'} eq "")) { &error("パスワードが違います"); }
 
 &check;

 if ($filelock == 1){ &lock;}
 &input;

 &get_time;
  
 $max ++;
 while ($max <= @data) { &error("登録の出来る限度数を超えているため、登録が出来ません"); }
 $data2 = ();
 @new = ();
 for ($i = 0; $i < @data; $i++) {
   if ($i == 0 ) { $data2 = $data[0];}
   else { push(@new,$data[$i]);}
 }
	unshift(@new,"$in{'site'}<>$in{'url'}<>$in{'name'}<>$in{'comment'}<>$date<>$in{'no'}<>\n");
 	unshift(@new,"$data2");

  if ($filelock ==2 ) {
    open(OUT, "+< $logfile"); 
    flock(OUT, 2);             
    truncate(OUT, 0);          
    seek(OUT, 0, 0);           
    print OUT @new;     
    close(OUT);            
  } else {              
    open(OUT,">$logfile") || &error ('ファイルオープンエラー');       
	   print OUT @new;
	   close(OUT);
  } 
  if ($filelock == 1){ &unlock;}

  &password("サイトの登録が完了しました");
}

sub regist2 {
	local($site,$url,$name,$comment,$date,$no,@data);

	if (($in{'adpass'} ne $adpass) || ($in{'adpass'} eq "")) { &error("パスワードが違います");}  
 
 &check;

 if ($filelock == 1){ &lock;}
 &input;

 $r_cnt = 0;
 for ($i = 1; $i < @data; $i++) {
	  local($site,$url,$banner,$comment,$date,$no) = split(/<>/,$data[$i]); 
        $r_cnt ++;
        if ($in{'e_cnt'} == $r_cnt) {
        $data[$i] = "$in{'site'}<>$in{'url'}<>$in{'name'}<>$in{'comment'}<>$in{'date'}<>$in{'no'}<>\n"; 
      
        }
  }

  &output;
 if ($filelock == 1){ &unlock;}

  &password("修正処理が完了しました");
}

sub regist3 {
	local($site,$url,$banner,$comment,$date,$no,$s_cnt,$newline,$genre,@data,@new);

 if (($in{'adpass'} ne $adpass) || ($in{'adpass'} eq "")) { &error("パスワードが違います");  }  
	if ($in{'genre'} eq "") { &error("カテゴリーが設定されていません"); }

 if ($filelock == 1){ &lock;}
 &input;

	$in{'genre'} =~ s/　/ /g;
 $in{'genre'} =~ s/ /<>/g;

 for ($i = 1; $i < @data; $i++) { push(@new,$data[$i]);}
 @data = ();
	unshift(@new,"$in{'genre'}\n");
 &output2;
 if ($filelock == 1){ &unlock;}
 
 &password("カテゴリーの編集が完了しました");
 }

sub delete {
	local($site,$url,$name,$comment,$date,$no,@data);

	if (($in{'adpass'} ne $adpass) || ($in{'adpass'} eq "")) { &error("パスワードが違います");} 
 if ($in{'e_cnt'} eq "")  { &change;}

 if ($filelock == 1){ &lock;}
 &input;

 $d_cnt = 0;
 foreach $lines (@data) {
	local($site,$url,$name,$comment,$date,$no) = split(/<>/,$lines);
  if ($d_cnt != $in{'e_cnt'}) { push(@new,$lines); }
  $d_cnt ++ ;
 }
  unshift(@new,$genre2);

 &output2;
 if ($filelock == 1) { &unlock;}

 &password("削除処理が完了しました");
}

sub change {
 local($site,$url,$name,$comment,$date,$no,$e_cnt,$end,@data);

	if (($in{'adpass'} ne $adpass) || ($in{'adpass'} eq "")) { &error("パスワードが違います");}

 if ($filelock == 1){ &lock;}
 &input;
 if ($filelock == 1){ &unlock;}

 for ($i = 0; $i < @data; $i++) {
 chomp $data[0];
 @genre = split(/<>/,$data[0]);
 }

	print <<"EOM";
Content-type: text/html

$header2
<table width="$width"  align="center">
<tr><td align="center">
<h2>サイト情報の編集</h2>
<br clear="all">
EOM

 if ($in{'start'} eq '') { $in{'start'} = 1; }
 $end = $in{'start'} + $pagemax;
	$pre = $in{'start'} - $pagemax;
 if ($end > @data) { $end = @data; }

 $e_cnt = 0;
 for ($i = $in{'start'}; $i < $end; $i++) {
 local($site,$url,$name,$comment,$date,$no)  = split(/<>/,$data[$i]);
 $e_cnt ++;

	$comment =~ s/<br>/\r\n/g;
	$comment =~ s/<br>/\r/g;
	$comment =~ s/<br>/\n/g;

	print "<table  align=\"center\" cellpadding=\"3\" class=\"ts\">\n";
	print "<form action=\"$cgifile\" method=\"post\">\n";
	print "<input type=\"hidden\" name=\"e_cnt\" value=\"$e_cnt\">\n";
	print "<input type=\"hidden\" name=\"adpass\" value=\"$in{'adpass'}\">\n";
	print "<input type=\"hidden\" name=\"date\" value=\"$date\">\n";
	print "<tr><td>&nbsp;▼サイト名<br>\n";
	print "&nbsp;<input type=\"text\" name=\"site\" size=\"45\"  value=\"$site\">&nbsp;\n";
	print "</td></tr>\n<tr><td>\n&nbsp;▼ホームページ<br>\n";
	print "&nbsp;<input type=\"text\" name=\"url\" size=\"45\"  value=\"$url\">&nbsp;\n";

	print "</td></tr>\n<tr><td>\n&nbsp;▼コメント<br>\n";
	print "&nbsp;<textarea rows=\"5\" cols=\"50\" name=\"comment\" wrap=\"soft\" >$comment</textarea>&nbsp;\n";
	print "</td></tr>\n<tr><td>&nbsp;▼カテゴリー<br>\n\n";
	print "&nbsp;<select name=\"no\" >\n";

 $g_flag = 0;
 foreach $genreline(@genre) {
     $g_flag ++ ;
     if ($no == $g_flag) {
     print "<option value=\"$g_flag\" selected=\"selected\">$genreline\n";
     } else {
     print "<option value=\"$g_flag\">$genreline\n";
  }
 }
	print "</select>&nbsp;\n";
	print "</td></tr>\n";
	print "<tr><td align=\"right\">\n";
	print "<input type=\"radio\" name=\"mode\" value=\"regist2\" checked=\"checked\">修正&nbsp;\n";
	print "<input type=\"radio\" name=\"mode\" value=\"delete\">削除&nbsp;\n";
	print "<input type=\"submit\" value=\"実　行\"  >&nbsp;\n";
	print "<input type=\"reset\" value=\"取　消\"  >&nbsp;</form>\n";
	print "</td></tr></table>\n";
 print "<br><br clear=\"all\">\n";
 }
	print "<br clear=\"all\">\n";
 if (($in{'start'} != 1) || ($end < @data)) {
 print "<table align=\"center\"><tr>\n";
 }
 if ($in{'start'} != 1) {
	print "<td><form action=\"$cgifile\" method=\"post\">\n";
 print "<input type=\"hidden\" name=\"start\" value=\"$pre\">\n";
 print "<input type=\"hidden\" name=\"adpass\" value=\"$in{'adpass'}\">\n";
 print "<input type=\"hidden\" name=\"mode\" value=\"change\">\n";
 print "<input type=\"submit\" value=\"前の$pagemax件\" ></form></td>\n";
 } 
 if ($end < @data) {
	print "<td><form action=\"$cgifile\" method=\"post\">\n";
 print "<input type=\"hidden\" name=\"start\" value=\"$end\">\n";
 print "<input type=\"hidden\" name=\"adpass\" value=\"$in{'adpass'}\">\n";
 print "<input type=\"hidden\" name=\"mode\" value=\"change\">\n";
 print "<input type=\"submit\" value=\"次の$pagemax件\" ></form></td>\n";
 } 
 if (($in{'start'} != 0) || ($end < @data)) {
 print "</tr></table>\n";
 }
 print "</td></tr></table>\n";
 print " $fotter\n";

exit;
 }

sub form {
	 if (($in{'adpass'} ne $adpass) || ($in{'adpass'} eq "")) { &error("パスワードが違います"); }

 if ($filelock == 1){ &lock;}
 &input;
 if ($filelock == 1){ &unlock;}

 for ($i = 0; $i < @data; $i++) {
 chomp $data[0];
 @genre = split(/<>/,$data[0]);
 last;
 }

		print <<"EOM";
Content-type: text/html

$header2
<table width="600px"align="center" cellpadding="10" class="ts">
<tr><td >
<h2><div align="center">新 規 登 録</div></h2> 
<br clear="all">
<form action="$cgifile" method="post">
<input type="hidden" name="mode" value="regist">
<input type="hidden" name="adpass" value="$in{'adpass'}">
<table  width="100%" cellpadding="3" >
<tr><td align="right" colspan="2">
サイト名：
<input type="text" name="site" size="35">
</td></tr>
<tr><td align="right" colspan="2">
ホームページ：
<input type="text" name="url" size="35" value="http://">
</td></tr>
<tr><td align="right" colspan="2">

</td></tr>
<tr><td valign="top" width=50%>
<div align=right>コメント：</div>
</td><td align="right">
<textarea rows="5" cols="39" name="comment" wrap="soft"></textarea>
</td></tr>
<tr><td align="right">
カテゴリー：</td><td>
<select name="no" >
EOM

 $g_flag = 0;
 foreach $genreline(@genre) {
     $g_flag ++ ;
     print "<option value=\"$g_flag\">$genreline\n";
 }
	print "</select>&nbsp;\n";

	print "</td></tr>\n";
 print "<tr><td align=\"right\" colspan=\"2\">\n";
	print "<input type=\"submit\" value=\"登　録\"  >\n";
	print "<input type=\"reset\" value=\"取　消\"  >\n</form>\n";
	print "</td></tr></table>\n</td></tr></table>\n";
 print "$fotter\n";

	exit;
}

sub password {
	print <<"EOM";
Content-type: text/html

$header2 
<table width="600px" align="center" cellpadding="10" >
<tr><td align="center">
<h2>$_[0]</h2>
<br><br> 
<form action="$cgifile"  method="post">
<input type="radio" name="mode" value="form" checked="checked">新規登録
<input type="radio" name="mode" value="change">修正・削除
<input type="radio" name="mode" value="category">カテゴリーの編集&nbsp;
EOM

 if ($in{'adpass'} ne "" ) {
     print "<input type=\"hidden\" name=\"adpass\" value=\"$in{'adpass'}\">\n";
  } else {
     print "<input type=\"password\" name=\"adpass\" size=\"8\"  >\n";
 }
	print "<input type=\"submit\" value=\"管理室\"  ></form>\n";
	print "<br><br>\n";
	print "</td></tr></table>\n";
	print "$fotter\n";

	exit;
}

sub category {
	local($cate,@data);
	if (($in{'adpass'} ne $adpass) || ($in{'adpass'} eq "")) { &error("正しい管理用パスワードを入力して下さい"); }

 if ($filelock == 1){ &lock;}
	&input;
 if ($filelock == 1){ &unlock;}

 for ($i = 0; $i < @data; $i++) {
 chomp $data[0];
 @cate = split(/<>/,$data[0]);
 last;
 }
 $cate = ~s/<>/ /g;

	print <<"EOM";
Content-type: text/html

$header2
<table cellpadding="10" align="center" class="ts">
<tr><td align="center">
<h2>カテゴリーの編集</h2>
</td></tr><tr><td >

<ul>
<li>追加登録したいカテゴリー名を<b>半角スペース</b>で区切って記入して下さい。</li>
<li>削除する場合は、先に<b>登録されているサイトを全て削除</b>してから行って下さい。</li>
</ul>
<div align="center">
<form action="$cgifile" method="post">
<input type="hidden" name="adpass" value="$in{'adpass'}"> 
<input type="hidden" name="mode" value="regist3"> 
<input type="text" name="genre" size="50"  value="@cate">
<input type="submit" value="修正・追加" ></form>
</div>

</td></tr></table>
<br clear="all">
$fotter
EOM

exit;
 }

sub search {
 local($site,$url,$banner,$comment,$date,$no,$s_top,$s_flag,@data,@s_data,@newdata);

 if ($in{'word'} eq "" ) { &error('検索したい語句を入力して下さい');}
 if (length($in{'word'}) >= 200 ) { &error('これ以上長い語句は検索出来ません'); }

	$in{'word'} =~ s/　/ /g;
	@words = split(/\s+/, $in{'word'});

	if ($filelock == 1){ &lock;}
		@s_data=();
		open(IN,"$logfile") || &error ('ファイルオープンエラー'); 
  if ($filelock ==2 ) {
    eval{ flock(IN2, 1);}; 
    if ($@) { &error('flock関数は使用出来ません。mkdir関数に設定して下さい');}   
  }
  $top = <IN>;
		while (<IN>) {
			$s_flag=0;
			foreach $s_line (@words) {
  				if (index($_,$s_line) >= 0) {
	  				$s_flag=1;
	    				if ($in{'s_flag1'} == 1) { last; }
		  		} else {
		    			if ($in{'s_flag1'} == 0) { $s_flag = 0; last; }
				  }
			 }
			if ($s_flag == 1) { push(@s_data,$_); }
		}
		close(IN);

 $s_top = 1; 
	&header;
	print "<br><br><br clear=\"all\">\n";
	print "<table  width=\"$width\" align=\"center\" cellpadding=\"3\">\n";

 $count2 = @s_data;
 if ($count2 == 0 ) {
	  print "<tr><th>\n";
   print "<big>該当するサイトは見つかりませんでした</big>\n";
	  print "</th></tr></table>\n";
   print "<br><br>\n";
   print " $fotter\n";

 } else {

   print "<tr><td bgcolor=\"$c_bgcolor\" colspan=\"2\">\n";
   print "<h1>該当するサイトは$count2件です</h1>\n";
	  print "</th></tr>\n<tr><td width=\"5%\"><br>\n</td><td>\n";
   print "<table cellpadding=\"3\">\n";

 foreach (@s_data) {
 local($site,$url,$name,$comment,$date,$no)  = split(/<>/,$_);

    $site = "<a href=\"$url\" target=\"_blank\" title=\"$site\"><b>$site</b></a>"; 
    if ($name ne "") {$name = "［管理人：$name 様］";}

    print "<tr><td valign=\"top\">$site</td>\n";
	   print "<td>$comment $name</td></tr>\n";
     }
 print "</table>\n</td></tr></table>\n";
 print "<br clear=\"all\">\n";
 print " $fotter\n";
 }

exit;
}

sub input {
 if ($filelock ==2 ) {
    open(IN,"$logfile") || &error ('ファイルオープンエラー');
    eval{ flock(IN, 1);}; 
    if ($@) { &error('flock関数は使用出来ません。mkdir関数に設定して下さい');}   
    @data = <IN>;        
	   close(IN);
  } else {
    open(IN,"$logfile") || &error ('ファイルオープンエラー');
    @data = <IN>;
	   close(IN);
  }
 }

sub output {
 if ($filelock ==2 ) {
    open(OUT, "+< $logfile"); 
    flock(OUT, 2);             
    truncate(OUT, 0);          
    seek(OUT, 0, 0);           
    print OUT @data;     
    close(OUT);            
  } else {              
    open(OUT,">$logfile") || &error ('ファイルオープンエラー');       
	   print OUT @data;
	   close(OUT);
  } 
 }

sub output2 {
  if ($filelock ==2 ) {
    open(OUT, "+< $logfile"); 
    flock(OUT, 2);             
    truncate(OUT, 0);          
    seek(OUT, 0, 0);           
    print OUT @new;     
    close(OUT);            
  } else {              
    open(OUT,">$logfile") || &error ('ファイルオープンエラー');       
	   print OUT @new;
	   close(OUT);
  } 
 }

sub get_time {
	$ENV{'TZ'} = "JST-9";
	local($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time);
 local(@week) = ('sun','mon','tue','wed','thu','fri','sat');
 $wday = $week[$wday];
	$date = sprintf("%04d/%02d/%02d (%s) %02d:%02d", $year+1900,$mon+1,$mday, $wday,$hour,$min);
 }

sub lock {
 if (-e $lockdir ) {
 local($checktime) = (stat($lockdir))[9];
 if (($date - $checktime ) > 120) { rmdir($lockdir); }
 }
 $retry = 5;                                
 while (!mkdir($lockdir, 0755)) { 
 if (--$retry <= 0) { &error("混雑しています。時間をあけてアクセスして下さい"); } 
 sleep(1);                              
 }
 }

sub unlock {
 rmdir($lockdir); 
 }

sub error {
	print <<"EOM";
Content-type: text/html

$header2
<table width="600px" align="center" cellpadding="10" class="ts">
<tr><td align="center">
<h2>以下のエラーが発生しました</h2>
<br><br><br>
<font size="2">
<b>$_[0]</b>
</font>
<br><br>
［<a href="javascript:history.back()">前の画面に戻る</a>］
<br><br>
</td></tr></table>
 $fotter
EOM

	exit;
}

