NAME

Counter - Web Access Counter module.


SYNOPSIS

  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;
  }


DESCRIPTION

何の変哲もないアクセスカウンタ。

EXPORT

None.


method

new
Counter オブジェクトを作成します。
  引数 : dsn  (DBI->connect の第1引数)
         user (DBI->connect の第2引数)
         pass (DBI->connect の第3引数)
         path ( [0-9].png ファイルへのパス。デフォルトではカレントディレクトリ)

increase
カウンタを1増加させ、ログを記録します。 増加後のカウンタの値を返します。

ログ記録テーブルは以下の 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 を記録します。

image
カウンタの PNG 画像(バイナリ)を返します。

コンストラクタの引数 path に与えたディレクトリに [0-9].png という画像ファイルが存在する必要があります。 また、これらの画像ファイルはすべて同じ大きさ (幅、高さ) でなくてはなりません。 大きさが違う場合、全て 0.png の大きさと同じであるとして扱われます。

引数 digit を指定すると、指定した桁数の画像を返します。(デフォルトは6桁)

  $img = $c->image;

  $img = $c->image(digit => 10);

count
現在のカウンタの値を返します。


AUTHOR

藤原俊一郎 (FUJIWARA Shunichiro) <fujis@gol.com>


SEE ALSO

  GD
  Image::Size
  DBI