Counter - Web Access Counter module.
use Counter;
my $c = Counter->new( dsn => 'dbi:mysql:database=hoge',
user => 'foo', # DB user
pass => 'bar', # DB password
path => '/foo/bar/path' # [0-9].png file path
);
$c->increase; # カウンタアップ、ログ記録;
if($mode eq 'text'){
print "Content-Type: text/plain\n\n";
$c->count;
}
if($mode eq 'image'){
print "Content-Type: image/png\n\n";
print $c->image;
}
何の変哲もないアクセスカウンタ。
None.
引数 : dsn (DBI->connect の第1引数)
user (DBI->connect の第2引数)
pass (DBI->connect の第3引数)
path ( [0-9].png ファイルへのパス。デフォルトではカレントディレクトリ)
ログ記録テーブルは以下の SQL で作成。(PostgreSQL, MySQL, SQLite)
CREATE TABLE access_log(
counter int,
access_date datetime,
remote_addr text,
remote_host text,
user_agent text,
referrer text);
引数 remote_addr, remote_host, user_agent, referrer を設定すると、その値を記録します。 引数を渡さなければ、それぞれ環境変数の REMOTE_ADDR, REMOTE_HOST, HTTP_USER_AGENT, HTTP_REFERRER を記録します。
コンストラクタの引数 path に与えたディレクトリに [0-9].png という画像ファイルが存在する必要があります。 また、これらの画像ファイルはすべて同じ大きさ (幅、高さ) でなくてはなりません。 大きさが違う場合、全て 0.png の大きさと同じであるとして扱われます。
引数 digit を指定すると、指定した桁数の画像を返します。(デフォルトは6桁)
$img = $c->image;
$img = $c->image(digit => 10);
藤原俊一郎 (FUJIWARA Shunichiro) <fujis@gol.com>
GD Image::Size DBI