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