ちびちびダウンロードカウンタPerl版



●はじめに

ダウンロードカウンタをPeal版に書き直してみました。

●実行例(downld2.lzhをダウンロードしてからリロードしてみよう)

downld2.lzhをダウンロードします
これまで3061 回ダウンロードされました。

●導入手順

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

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

このファイルを開いて、ダウンロードしたいファイルのURLを書き換えます。それから、FTPで自分のサイトに転送します。

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

$echo 0 >count.log

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

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

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

4.動作確認をします

$downld2.cgi
$cat count.log

downld2.cgiを何度か実行すると次のような行が現れます。

Location:http://www.big.or.jp/~roro/webtech/downld2/downld2.lzh

そうしたらcount.logの内容を調べて値が更新されればOKです。

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

<a href=downld2.cgi>プログラムのダウンロード</a>
これまで<!--#exec cmd="awk '{printf \"%d\",$1}' count.log"-->回のアクセスがありました。

これでダウンロードしたときにカウントされ、ホームページにアクセスしたとき「これまで3回のアクセスがありました」と表示されます。ちなみに、表示部分は次のようにしてもよいのですが・・・

<a href=downld2.cgi>プログラムのダウンロード</a>
これまで<!--#exec cmd="cat count.log"-->回のアクセスがありました。

これだと、count.logが誰でも書き込めるファイルになっているので、いたずらされる危険があります。たとえば、誰かがcount.logを「ばーかあーほ」とか書き換えてしまうと「これまで ばーかあーほ 回のアクセスがありました」と表示されてしまいます。しかし、最初の方法ならば最悪の場合でも「これまで0回の……」になるだけですみます。

●リスト

#!/usr/local/bin/perl
#基本ダウンロードカウンタ▲(c)p4room(http://p4room.mda.or.jp/~roro/)

$file = "count.log";	#カウンタ保存用ファイル、chmodの設定は606
$url  = "http://p4room.mda.or.jp/~roro/webtech/downld2/downld2.lzh";
			#ダウンロードしたいファイルのURLを指定する

open(FILE,"+<$file") || die "$fileが開けません";	#読み書き両用オープン
flock(FILE,2);			#ロックする(使用中なら未使用になるまで待つ)

chop($count = <FILE>);		#カウンタを読み出す
$count++;			#$count = $count + 1 と同じ
seek(FILE,0,0);			#ファイルポインタを先頭に戻す
print FILE "$count\n";		#ファイルに書き込む
truncate(FILE,tell);		#現在より後ろを削除

flock(FILE,8);			#ロック解除
close(FILE);			#クローズ

print "Location:$url\n\n";	#ダウンロードしたいファイルのURLを指定

exit;			#おしまい



Return IndexPage