クリックカウンタで隠しページにジャンプさせたい
クリックカウンタについて教えて下さい。
(1)ある特定のカウント(例えば10)になったら隠しページに飛ばしたい
(2)その後は何度クリックしてもカウント数はかわらない(動作させない)
(3)その後カウントをクリアして再度クリックカウント出来るようにしたい
(1)はなんとか出来ました。ですが、その後の動作が上手く出来ません。どなた様かアドバイスをお願い申し上げます。
<<click.cgi>>
#!C:\Perl\bin\perl
#===================================================
# 各種設定
#===================================================
$lockfile = "./lock";
$jumpurl = "./blog.html"; #ジャンプさせたい隠しページのURL
$hikaku = 9;
#日時の取得------------------------------
@youbi = ('日', '月', '火', '水', '木', '金', '土');
($sec,$min,$hour,$mday,$mon,$year,$week,$yday,$sammer) = localtime;
$year += 1900;
$mon += 1;
$yday = "";
$sammer = "";
$now = "$year年$mon月$mday日($youbi[$week]) $hour:$min-$sec秒\n";
#===================================================
# カウントアップ
#===================================================
$url = $ENV{'QUERY_STRING'};
&lock;
#ログファイルからデータの読み込み----------
open (IN,"<cntdata.dat") || die "Open Error!\n";
$cnt = <IN>;
close IN;
if($cnt >= $hikaku){
open (FILE, ">text.dat") || die "Open Error!\n";
print FILE "$now<br />10クリックを超えました。ご利用ありがとうございました。";
close FILE;
open (OUT,">cntdata.dat") || die "Open Error!\n";
$cnt = 1;
print OUT $cnt;
close OUT;
print "Location: $jumpurl\n\n";
exit;
}
#記録の更新--------------------------------
$cnt++; #カウントアップ
$count = sprintf("%04d", $cnt);
open (OUT,">cntdata.dat") || die "Open Error!\n";
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);}
<<cntdata.dat>>
クリック数
<<text.dat>>
日時とありがとうメッセージ
<<index.shtml>>
<html>
<head>
<title>サンプル</title>
</head>
<body>
<a href="./click.cgi?./index.shtml">クリック</a>
<p>現在のクリック数:<!--#include file="./cntdata.dat"--></p>
<p><!--#include file="./text.dat"--></p>
</body>
</html>
10クリック超えて、カウンタの数字が1に戻るのですが、その後またクリックすると動きません。なので、(3)にしたい場合には何をすればよいのでしょか。また(3)が無理なら(2)のようにクリックしてもcgiを動作しないようにしたいです。