end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

CGI::Sessionによるセッション管理

簡単なセッション管理を実装することになり、perlCGI::Sessionを使用しました。

CGI::Sessionでは、セッション情報をcookiemysqlへ登録できるようですが、私の場合、ファイルとしてセッション情報を保持したので、そのsrcの一部を記載しておきます。

http://search.cpan.org/perldoc?CGI::Session

新規セッション

package CgiSession::Test;
use strict;
use utf8;
use CGI::Session;

sub start_session {
    my ($self,$cgi)= @_;
    #この例では、セッション情報をあるdir以下に保存
    my $session = CGI::Session->new(undef,
                                    undef,
                                    {Directory=>'/tmp/cgi_session'});
    #セッションにkey-valueを登録                                    
    $session->param('find_atri','find_val');
    #セッションIDとurlに含めてredirect
    my $url =join('',
                  $self->root_cgi,
                  "/members/list",
                  "?s_id=",$session->id());
    print $cgi->redirect($url);
    return $self;
}

セッション情報のload

package CgiSession::Test;
use strict;
use utf8;
use CGI::Session;

sub load_session {
    my ($self,$cgi)= @_;

    #sessionのload
    my $session =
        CGI::Session->new(undef,
                          $cgi->param('s_id'),
                          {Directory=>'/tmp/cgi_session'});
    #セッションからkey-valueを取得
    my $find_sql = $session->param('find_sql');
    return $self;
}