- クリックカウンタ -

Perlとは

リンクから一度CGIへ飛び、処理をした後、再度同じHTMLファイルに戻る。 それがカウントアップして表示されている。

サンプル

<<clic.cgi>>
#!C:\Perl\bin\perl

#===================================================
# 各種設定
#===================================================
$lockfile = "./lock";


#===================================================
# カウントアップ
#===================================================
$url = $ENV{'QUERY_STRING'};

&lock;
open (IN,"<cntdata.dat") || &error; #ログファイルからデータの読み込み
	$cnt = <IN>;
close IN;

$cnt++; #カウントアップ
$count = sprintf("%05d", $cnt);

open (OUT,">cntdata.dat") || &error;
	print OUT $count; #記録の更新
close OUT;
&unlock;

print "Location: $url\n\n"; #クエリ文字以下のページにジャンプさせる
exit;


#===================================================
# エラーと排他処理サブルーチン
#===================================================
sub lock {
	$retry = 3;
	if (-e $lockfile) {
		$locktime = (stat($lockfile))[9];
		if ($locktime < time - 60) {&unlock;}
	}
	while (!mkdir($lockfile, 0755)) {
		if (--$retry < 0) {&error;}
		sleep(1);
	}
}


sub unlock {rmdir($lockfile);}


sub error {exit;}
-----------------------------------------------------
<<sample.cgi>>
<a href="http://localhost/tue/click.cgi?http://localhost/tue/sample.shtml">
<img src="./i-04.gif" border="2" vspace="2"></a><br>
クリック数:<!--#include file="./cntdata.dat"-->

クリックしてcgiを呼び出しカウントアップ。そのデータをinclude filでHTMLファイルに表示している。

ダウンロード