ちびちびアクセスカウンタ本日の来訪者付き



●はじめに

本日の来訪者数を表示するように改造してみました。timeを使って時間を取得し、日付がかわったら0クリアするようになっています。なお、私のカウンタでは、例えば1月1日に誰かがアクセスした後、次のアクセスが2月1日だったときには、0クリアされないという欠点がありますが、かんべんね。

●実行例(このページをリロードしてみよう)

あなたで07836人め(本日002人)

●導入手順

1.「count_p2.cgi」を入手します

ここをクリックするとファイルが拾えます

これをFTPで自分のサイトに転送します。

2.カウンタ値を保存する「count.log」を作成します。

$echo 0 >count.log

※「$」はUNIXのプロンプトだから入力する必要はないよ。

3.ファイルのパーミッションを変更します

$chmod 755 count_p2.cgi
$chmod 606 count.log

4.動作確認をします

$count_p2.cgi
$cat count.log

count_p2.cgiを何度か実行してcount.logの内容が更新されればOKです。

5.HTML文書にスクリプトを実行するための1行を入れます

あなたで<!--#exec cmd="count_p2.cgi"-->人め

●リスト

#!/usr/local/bin/perl
#本日の来訪者数付きカウンタ▲(c)p4room(http://p4room.mda.or.jp/~roro/)

$file	 = "count.log";		#カウンタ保存用ファイル。chmodの設定は606

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
				#現在時刻を取得
open(FILE,"+<$file") || die "$fileが開けません";	#読み書き両用オープン
flock(FILE,2);			#ロックする(使用中なら未使用になるまで待つ)
chop(@count = <FILE>);		#カウンタを配列に読み込む
				
if ($mday != $count[2]) { 	#日付けが変わったら
   $count[1]="0"; $count[2]=$mday;	#今日カウンタを0にする。日付を更新する
   }
$count[0]++;			#合計カウンタを+1する
$count[1]++;			#今日カウンタを+1する

seek(FILE,0,0);			#ファイルポインタを先頭に戻す
print FILE "$count[0]\n";	#合計カウンタ書き出し
print FILE "$count[1]\n";	#今日カウンタ書き出し
print FILE "$count[2]\n";	#日付を書き出し
truncate(FILE,tell);		#現在より後ろを削除

printf("あなたで<font size=6>%05d</font>人め(本日%03d人)",$count[0],$count[1]);

flock(FILE,8);			#ロック解除
close(FILE);			#クローズ
exit;				#おしまい



Return IndexPage