CGI-BBS > 基本認証 > その他 > COSMO GATE-EXの改造でログを上書きされないようにしたい。


カレッヂ
カレッヂ


質問者 YaMa3  投稿日 6/7(土) 16:32:00  [削除] (返信・回答が付いた後にこの質問の削除はできません)
こんにちは。YaMaと申します。お願いします。

アクセス制限のCGIですが、
KENT Webさんのフリーの「COSMO GATE-EX」を使っています。
その場合のログについてです。現状では、

yama<>2003/06/07(Sat) 15:50:52<>5<><>219.111.xxx.xxx<>1054123111<><><>

のようになってます。何を言いたいかというと、
同一ユーザーが、アクセスした場合は、
上書きされてしまいます。

希望としては、
yama<>2003/06/05(Thu) 15:50:52<>4<><>219.111.xxx.xxx<>1054123111<><><>
yama<>2003/06/07(Sat) 15:50:52<>5<><>219.222.xxx.xxx<>1054123122<><><>

という具合に、上書きされずに、なって欲しいというのと、
もう一つ、IPアドレスだけでなく、
	s123456.ap.plala.or.jp
というようなホスト名も、追加して記されると、
どこからアクセスしたのか大変参考になるのですが、
このような相談は、無理でしょうか?

KENTさんのサポートは、改造の質問は、受け付けていませんです。
(ですので、質問していません。)
1〜2ヶ月前から、どうにかならないだろうかと、考えています。
どうぞ、お願いします。m(_ _)m

CGIは、以下のようになっています。(全てを書かなければ、いけないと思いますが、
長くなるので、以下の部分だけにしました。)
#--------------------#
#  アクセス履歴処理  #
#--------------------#
sub record {
	local($rid,$rdate,$rcnt,$rmemo,$raddr,$rtime,$rname,$remail);

	# ロック開始
	if ($lockkey) { &lock; }

	# 記録ファイルを開く
	open(REC,"$targetdir\/$reclog") || &error("Open Error : $reclog");
	@lines = <REC>;
	close(REC);

	# IDのマッチング
	local($flag) = 0;
	@new = ();
	foreach $line (@lines) {
		($rid,$rdate,$rcnt,$rmemo,$raddr,$rtime,$rname,$remail) = split(/<>/,$line);
		if ($rid eq "$id") {
			$flag = 1;
			$rcnt++;
			$line = "$rid<>$date<>$rcnt<>$rmemo<>$ENV{'REMOTE_ADDR'}<>$times<>$rname<>$remail<>\n";
		}
		push(@new,$line);
	}

	if ($flag == 1) {
		# 履歴を上書き
		open(REC,">$targetdir\/$reclog") || &error("Can't write $reclog");
		print REC @new;

	} else {
		# 新規ログを追加
		open(REC,">>$targetdir\/$reclog") || &error("Can't write $reclog");
		print REC "$id<>$date<>1<><>$ENV{'REMOTE_ADDR'}<>$times<><><>\n";
		close(REC);
	}

	# ロック解除
	if ($lockkey) { &unlock; }
}

プロバイダ参照:http://homepage.nifty.com/
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:秀丸
FTPソフト:FFFTP
サーバ移転:していない
改造:している 改造前正常動作
CGI習熟度:middle

返信(回答)する

 


Web裏技