NAME

CTK::Session - yet another session manager


SYNOPSIS

  use CTK::Session;

  my $s = CTK::Session->new(session_dir => '/tmp');

  my $ret = $s->retrieve;
  if (!$ret) {
     my $errref = $s->errors;
     warn "$_\n" for(@$erref);
  }

  my $sid = $s->id;

  $s->param(name => 'Mike');

  $ret = $s->commit;
  if (!$ret) {
     my $errref = $s->errors;
     warn "$_\n" for(@$erref);
  }

  $s->retrieve($sid);

  my $name = $s->param('name');
  print "$name\n";

  $ret = $s->expire;
  if (!$ret) {
     my $errref = $s->errors;
     warn "$_\n" for(@$erref);
  }


DESCRIPTION


METHODS

new
  my $s = CTK::Session->new;

新しいセッションオブジェクトを作成します。 次のようにして、オプションのパラメータを指定することもできます。

  my $q = CTK::Session->new(session_dir => '/tmp',
                            delimiter => "\0",
                            secure => 1,
                            expires => 3600,
                            chmod => undef);

session_dir: セッション情報を記録したセッションファイルを保存するディレクトリ(デフォルト /tmp)

セッションファイルは、Session-(セッションID).dat のファイル名で保存されます。

delimiter: Vars で値を取得するときの区切文字(デフォルト \0)

secure: クライアントチェック 1=有効/0=無効(デフォルト 1)

有効の場合は、retrieve を実行した時に、 セッション情報を保存したクライアントかどうか、 アクセス元の IP をチェックします。認証に失敗した場合は、エラーが発生します。

expires: セッションの有効期限(デフォルト 3600)

セッション情報が commit されてからの有効経過時間を秒数で指定します。 有効期限のチェックは、retrieve を実行した時に行われ、期限切れの場合は、 エラーが発生します。無制限にする場合は 0 を指定して下さい。

chmod: セッションファイルのファイルモード(デフォルト undef)

セッションファイルのファイルモードを指定します。undef の場合は、何も変更しません。 必要に応じて 0666、0644、0600 などを指定することができます。 ファイルモードは、commit を実行したときに設定されます。

retrieve
  $s->retrieve;

  -or-

  $session_id = "64556d5a654e43724d4b704d7a636556"; # 発行済みのセッションID
  $s->retrieve($session_id);

何も指定しない場合は、新規セッションIDを生成します。 セッションID を指定した場合は、そのセッション情報を取り出します。 成功すると 1 を返します。

retrieve を実行した後には errors でエラーが発生していないか確認して下さい。

id
  $session_id = $s->id;

現在のセッションID を返します。

param
  @values = $s->param('foo');

  -or-

  $value = $s->param('foo');

指定したパラメータの値を取り出します。値がない場合は、undef を返します。 パラメータを指定しない場合は、すべてのパラメータ名を配列で返します。

  @names = $s->param();

パラメータに値を設定するには

  $s->param(foo => 'value1', 'value2', 'value3');

のように記述します。 パラメータ foo が既にいくつかの値を持っている場合は、その値を破棄した後に、 新しく指定した値が設定されます。

__ から始まるパラメータ名は、モジュール内部で使用されていますので避けて下さい。

Vars
  %session = $s->Vars;

  -or-

  $session_ref = $s->Vars;

すべてのパラーメータと値をハッシュで取り出します。1 つのパラメータに複数の値がある場合は、\0 (デフォルト) で区切った値になります。

tmpfile
  $path = $s->tmpfile;

現在のセッション情報が保存される予定のファイルのパスを返します。 ファイルが存在しない場合は、undef を返します。

remove
  $s->remove('foo');

指定したパラメータの値を削除します。

commit
  $s->commit;

現在のセッション情報をファイルに保存します。 commit を実行するまでセッションファイルへの保存は行われません。 また commit を実行しても、セッション情報に変更がない場合には保存されません。 成功すると 1 を返します。

expire
  $s->expire;

現在のセッション情報を破棄します。保持しているセッション情報とセッションファ イルは削除されます。成功すると 1 を返します。

errors
  $errref = $s->errors;
  print "$_\n" for(@$erref);

  -or-

  @errors = $s->errors;
  print "$_\n" for(@errors);

発生したエラーを取り出します。


AUTHOR

Yutaka Kojima <yutaka@asmate.net>

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


SEE ALSO

CTK