週間カウンター

直近7日間の訪問者数をカウントするプログラムソースです。
キーワードを変えれば、ページごとのカウントができます。

カウンター見本
「きかんしゃトーマスと遊ぼう!」訪問者


htmlの表示位置に
<!--週間カウンターカウントアップ-->
<img src="http://「CGIのあるURL」/week.cgi?「キーワード」" width=0 height=0>

<!--週間カウンターJavascriptデータとして読み出し-->

<script type="text/javascript" src="http://「CGIのあるURL」/「キーワード」.js">
</script>

<!--表の作成-->
<script type="text/javascript">
<!--

dy="日,月,火,水,木,金,土,累計".split(",");
today=new Date();
tw=today.getDay();
dd=cont.split(",");
document.write('<table cellpadding=1 style="font-size=10;">\n<tr>');
for(i=0;i<7;i++){
j=(tw*1+i+1)%7
document.write("<td align=center>"+dy[j]+"</td>");
}
document.write("<td align=center>"+dy[7]+"</td>");
document.write("</tr>\n<tr>");
for(i=0;i<7;i++){
j=(tw*1+i+1)%7
document.write("<td align=right>"+dd[j]+"</td>");
}
document.write("<td align=right>"+dd[7]+"</td>");

document.write("</tr>\n</table>\n");
//-->
</script>

「CGIのあるURL」や「キーワード」は自分のものに書き換えてください。



week.cgi
#!/usr/bin/perl

# 引数を取得
$buffer = $ENV{'QUERY_STRING'};##?以降

##日時曜日を取得
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime(time);
$dday=($wday+1)%7;

# JSファイルから読み込み

$countfile="$buffer.js";
if(-e $countfile){
##ファイルがあれば
open(LOG1,"$countfile");
@dd = <LOG1>;
close(LOG1);

# JSファイルを分解
$dd[0] =~ s/";"\n//g;##[改行]["][;]を取る
@dmy = split(/="/, $dd[0]);##[=]で分割
@dt= split(/,/,$dmy[1]);##曜日別に分割
}else{
##ファイルが無いとき
@dt= split(/,/,"0,0,0,0,0,0,0,0,9");##曜日別に分割,
}
# カウントアップ
$ddm=$dt[$wday];
$ddn=$dt[7];
##曜日が変わったらクリア
if($dt[8] != $wday){
$ddm=0;
}
$dt[$wday]=$ddm+1;##当日に加算
$dt[7]=$ddn+1;
$dt[8]=$wday;
$ddt= join (",",@dt);##[,]で連結

# JSファイルを更新する
open(LOG1,">$countfile");
flock(LOG1,2);
print LOG1 "cont=\"$ddt\"\;\n";
flock(LOG1,8);
close(LOG1);
# 終了
exit;



CGIはプロバイダーの仕様にあわせて、パーミッションを実行型にしてください。
このソースは月額200円の「TOK2 PROFESSIONAL」サーバー で使用中のものです。
「TOK2 PRO」のパーミッションは、フォルダーが[701]、CGIファイルが[700]です。