|
機能
シークレットアクセスカウンタ
- SSIによるページへのアクセスカウンタ表示
- アクセスカウンタを設置しているページとは別の表示ページによりカウンタ数をチェック可能
- ページ閲覧者はカウンタが設置されていることすらわかりません
- 同一IPからの連続アクセスはカウントされません
- 同一IPの連続アクセスインターバル設定可能
- 前日のアクセス、本日のアクセス、トータルのアクセスを表示
- 超単純スクリプトにより超高速
- 初期値設定可能
- 更にシンプルで同一IPの連続アクセスもカウントアップするシークレットカウンタもあります。
- 通常の単純なアクセスカウンタもあります。
設置方法
- カウンタ設置ページ
- CGI実行可能なディレクトリにsccnt2.cgiを置く。
- sccnt2.cgiの1行目のperlのパスをプロバイダに従って変更する。
- このCGIをSSIとして呼び出す親ページを.shtmlの拡張子で作成する。
- その.shtmlファイルに以下のようにSSIを埋め込む。
<!--#exec cgi="cgi-bin/sccnt2.cgi" -->
- カウントファイル名を変更する場合は、sccnt2.cgi内の以下の部分を修正する。
my $countfile = "count.log";
- 同一IP制限時間を変更するには、sccnt2.cgi内の以下の部分を修正する。デフォルトは30分になっています。
my $expire = 30;
- sccnt2.cgiのパーミッションを適切に変更する。
- 作成した.shtmlファイルをブラウザ上で読み込めばCGIが起動する。この時点でカウントがアップする。
- この.shtmlページにはsccnt2.cgiによる表示は何もありません。
- カウンタ表示ページ
- CGI実行可能なディレクトリにscread.cgiを置く。scread.cgiはシークレットカウンタとまったく同じものです。
- scread.cgiの1行目のperlのパスをプロバイダに従って変更する。
- このCGIをSSIとして呼び出す親ページをカウント設置ページとは別に.shtmlの拡張子で作成する。
- その.shtmlファイルに以下のようにSSIを埋め込む。
<!--#exec cgi="cgi-bin/scread.cgi" -->
- sccnt2.cgi内のカウントファイル名設定を変更した場合は、scread.cgi内の以下のカウントファイル名の設定をsccnt2.cgiと同じにする。
my $countfile = "count.log";
- カウントを表示するフォーマットを変更する場合は、scread.cgi内の以下の部分を修正する。
my $format = '今日: $t_count, 昨日: $y_count, トータル: $a_count<br>\n';
- scread.cgiのパーミッションを適切に変更する。
- 作成した.shtmlファイルをブラウザ上で読み込めばCGIが起動する。
カウントファイル
- カウントファイルは自動的に作成されるので予め準備する必要はありません。
- カウントファイルを置くディレクトリは書き込み可能になっている必要があります。
セキュリティについて
- カウント設置ページには何も表示されないのでページ閲覧者にはカウンタを設置していることさえわかりません。
- カウント表示ページのURLはユーザーに知らせる必要はありません。
- カウント表示ページを完全に独立させたい場合はどこからもリンクを貼らずに、検索にもかからないようにするとよいでしょう。
- scread.cgiを直接ブラウザ上で実行するとカウンタ数は表示されますが、そもそもそのサイトにこのシークレットカウンタが設置されていることすらユーザーはわからないのでscread.cgiを直接実行することはないと思われます。
- それでも直接実行されるのを防ぎたい場合はscread.cgiのスクリプト名を別な固有の名前に変更するとよいでしょう。その変更したスクリプトをカウント表示ページからSSIで読み込めば通常通りカウント数は表示されます。
- scread.cgiとカウント表示ページをユーザーの知らない別なディレクトリに設置することもできます。
- さらにページのアクセスを完全に制限したい場合はカウント表示ページを別なディレクトリに作成し、.htaccessなどのアクセス制限をかけるとよいでしょう。
初期値設定
CGIサンプル&ソース
更新履歴
- 2.00 : 12/15/06 : sccnt.cgiより同一IP制限機能を追加
|