No.1
- 回答日時:
元の、カウンタがどのようなことを記録して、どのような処理をしているか
分からないと組み込むことが出来るようなスクリプトは提示できません、
すみません。
で、通常ロックを使わずに複数カウントをしないようにするには、
アクセスしてきた人のアドレスとアクセス時刻をログに記録し、その記録から
1~5分以内に(時間はカウンタを使う人の考えによります)同じアドレスからの
カウントはしない。という事をします。
アクセスしてきた人のアドレスの取得するサブルーチンは以下の通りですので、
参考にしてください。
このルーチンはサーバがドメイン名の逆引きをサポートしていれば生IPでなく
ドメイン名を取得できますのでログ記録すればどこから来た人が多いのかなどの
統計処理にも使えます。
sub domain_name {
my($addr) = $ENV{'REMOTE_ADDR'};
my($h_adr) = gethostbyaddr(pack("C4",split(/\./,$addr)),2);
if ($h_adr ne '') {
} else {
if (/.+\.(.+)\.(.+)\.(.+)$/) { $h_adr = "\*\.$1\.$2\.$3"; }
elsif (/.+\.(.+)\.(.+)$/) { $h_adr = "\*\.$1\.$2"; }
elsif (/.+\.(.+)$/) { $h_adr = "\*\.$1"; }
else { $h_adr = "on the internet"; }
}
$h_adr;
}
この回答への補足
専門家の方が答えてくださって、大変心強く思っています。
私は、CGIは他作のものをダウンロードして、手を加えたりして使う派なのです。
で、今回は、ネットサーフレスキューのWebアナライザーというスクリプトを使っているのです。相手のOSとか様々なことを調べられて便利なのですが、唯一、更新ボタンを連続して押して、多重カウントを取り、キリ番(キリのいい番号を踏んだ人の名前をのせる)と名乗る人が現れ始めたのです。
大変申し訳ないのですが、このスクリプトの場合、どのような感じでどこら辺に書けばいいのか教えてください。よろしくお願いします。
No.2
- 回答日時:
単純なのは、アクセスカウンタの記録ファイルにカウント数だけでなくREMOTE_ADDRのデータも一緒に記録してしまい、次回アクセス時にそれを照合する方法ですね。
ソースはその辺に転がっているフリーのアクセスカウンタを見れば簡単だと思いますが。
私も自作のアクセスカウンタ公開してますんで、参考にされるならどうぞ。(URLは下記)
ただlockファイルを作らない場合、OS側のlock機構がしっかりしていないとカウントデータが飛ぶ場合がよくあります。
OSにflockが付いていても飛ぶときは飛びますから(笑)、私の場合はflockとrenameロックの二重ロックにしてます。
参考URL:http://www.cocky.to/MNGcount/
No.3
- 回答日時:
それからもう1つ。
環境変数HTTP_REFERERの内容を見て、自分のサイト内から飛んできたユーザーである場合にはカウントしない、という方法もあります。
ただしこの変数は、プロバイダの方針などによって変なアドレスを指していることもあるので、あらかじめ正しく動作するかテストする必要があります。
No.4
- 回答日時:
一番簡簡単なのは、Cookieを利用することでしょうか。
if($ENV{'HTTP_COOKIE'}){
exit;
}
else{
print "Set-Cookie:~
}
Cookieをチェックして、なければREMOTE_ADDRのチェックをするのがいいでしょう。
No.5ベストアンサー
- 回答日時:
>ネットサーフレスキューのWebアナライザーというスクリプトを使っているのです。
>相手のOSとか様々なことを調べられて便利なのですが、唯一、更新ボタンを連続し
>て押して、多重カウントを取り、キリ番(キリのいい番号を踏んだ人の名前をのせる)
>と名乗る人が現れ始めたのです。
とのことなので、Web アナライザを見てみました。
で、このスクリプトでは、REMOTE_HOST とアクセス時間を1時間単位で取得記録し
1日毎にログファイルを作っています。
そこで、今のアクセスが1時間以内の時はログ記録をしないようにしてやれば良い訳です。
ただし、この方法は違うユーザーでも、同じサーバを使って1時間以内にアクセスしてきた
場合もはじいてしまうという欠点があります。
(HTTP_REFERER だとリロードされた時(更新ボタンを押したとき)には、リファーが消えて
しまいどこから来たのか判別できなくなります。また Cookie はブラウザが受け付けない
設定になっている場合や、一部のブラウザでは、使えないのです。)
で、log.cgi の 77~90行目でログ記録をしているので、その前にログチェックいれて
やります。実際のスクリプトは以下のようになります。
#-----------------------------------ここから------------------------------------
# ログの読み込み
open(LOG,$log)
@lines = <LOG>;
close(LOG);
#スキップフラグをまずoffにする
$log_skip = 0;
# ログチェック
foreach $data (@lines) {
chop($data);
($LOG_HOUR,$LOG_HTTP_REFERER,$LOG_REMOTE_HOST,$LOG_HTTP_USER_AGENT,$LOG_OS) = split(/\t/,$data);
if(($LOG_REMOTE_HOST eq $REMOTE_HOST) && ($HOUR eq $LOG_HOUR)) {
# もし、そのユーザのアクセスしてきたサーバと時間が一致したら、
# スキップフラグをonにしてループを抜ける。
$log_skip = 1;
last;
}
}
#スキップフラグがonでなければログ記録
if($log_skip != 1) {
#ここからが、77行目~90行目
if (open(LOG,">> $log")) {
print LOG "$HOUR\t$HTTP_REFERER\t$REMOTE_HOST\t$HTTP_USER_AGENT\t$OS\n";
close(LOG);
chmod 0666,$log;
}
if (open(LOG,">> $log_file")) {
print LOG "\n";
close(LOG);
}
#ここまでが、77行目~90行目
}
#-----------------------------------ここまで------------------------------------
となります。
たぶんこれで大丈夫だと思いますが、もし何かあったら
k-ji@mail.goo.ne.jp
がgooでの私のメールアドレスなのでここにメールしてもらえれば相談に乗りますね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルのSTEP数について教えて...
-
アクセス解析がうまく動作しな...
-
HP作成、アクセスカウンターに...
-
自動人数カウンターってありま...
-
閲覧カウンターのカスタマイズ...
-
ウェブマスターツールの「表示...
-
HPで「あなたは何人目です」...
-
ホームページにカウンターが付...
-
プロキシからの書き込みを禁止...
-
HPの掲示板について
-
パソコン用語「ツリー」って、...
-
VBスクリプト---アプリの終了に...
-
掲示板に画鋲、ホッチキス以外...
-
VBSの作成 ディスク空き容量
-
オークション入札のスナイプ用...
-
風俗嬢の心のセンサーは壊れて...
-
(フリーの)ツリー掲示版CGI、...
-
携帯のアンテナ基地の設置料の...
-
MessageBoxのタイマーについて
-
ベーシック認証したユーザーの解析
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルのSTEP数について教えて...
-
アクセスカウンターの作り方
-
コピー機のカウンターは、空回...
-
ロゴの右端にアクセスカウンタ...
-
カウンタの取り付け方
-
HPで「あなたは何人目です」...
-
infoseekのカウンターはどうや...
-
HPのカウンターのことで
-
クリック数を1日ごとにカウン...
-
サブページへの来訪者のカウントは
-
自動人数カウンターってありま...
-
非同期カウンタの設計
-
閲覧カウンターのカスタマイズ...
-
カウンターが回らない
-
クリックされたらカウントされ...
-
バーコードのカウンター探して...
-
裏カウンター作成
-
HP作成、アクセスカウンターに...
-
CGIカウンタを別のページに設置
-
昨日のアクセスだけ記録するテ...
おすすめ情報