CGI::ApplicationからCGI::Sessionを使用するためのプラグインモジュール CGI::Application::Plugin::Sessionについてのメモ。
ULoevR Hi! and <a href="http://female-libido-patch-fda.socialgo.com">female libido patch</a> and http://female-libido-patch-fda.socialgo.com female libido patch and 345089 and <a href="http://opticare-ointment-fda.socialgo.com">opticare ointment</a> and http://opticare-ointment-fda.socialgo.com opticare ointment and %-))) and
CGI::Application::Plugin::Sessionモジュールは、CGI::ApplicationモジュールでCGI::Sessionモジュールによるセッション管理をするときに、CGI::Sessionオブジェクトの生成、セッションIDのCookieを使った受け渡しなどを簡単に(あるいは自動に)するプラグインモジュールです。
CGI::Applicationを継承するモジュール内で、次のようにCGI::Application::Plugin::Sessionモジュールをuseするだけです。
package MyApp; use base qw(CGI::Application); use CGI::Application::Plugin::Session;
以降は、MyAppに追加されるsessionというメソッドを呼ぶと、CGI::Sessionオブジェクトが返されます。MyAppメソッドの大半は、最初に「my $self = shift;」などとするでしょうから、次のように使えます。
sub do_stuff {
my $self = shift;
my $session = $self->session;
...
}
CGI::Application::Plugn::Sessionモジュールを使う簡単なサンプルコードです。CGI::Applicationモジュールのプラグインという性格上、サンプル自体もCGI::Applicationを使ったCGIになっています。
サンプルコードは適当なファイル名で保存し、CGIとして設置(先頭行のPerlパスの修正、ASCIIコードでFTP、パーミッションを755など実行権限のあるものにする、などは忘れずに!)して、アクセスして、CGIにアクセスしてみてください。
以下は、CGI::Application::Plugin::Sessionモジュールを使って、セッションによるカウントアップをしていく例です。 セッション情報の保持などについては、特に設定をしていないのでデフォルト値が使われます。
#!perl
package main;
use CGI::Carp qw(fatalsToBrowser);
my $app = CGI::SessionTest->new;
$app->run;
package CGI::SessionTest;
use strict;
use base qw(CGI::Application);
use CGI::Application::Plugin::Session;
use Data::Dumper;
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Sortkeys = 1;
our $VERSION = '0.01';
sub cgiapp_init {
my $self = shift;
$self->SUPER::cgiapp_init(@_);
}
sub setup {
my $self = shift;
$self->start_mode('s');
$self->mode_param('mode');
$self->run_modes(
's' => \&do_start
);
}
sub do_start {
my $self = shift;
my $count = $self->session->param('count');
$count++;
$self->session->param('count' => $count);
my $html = "count : $count";
$html .= $self->query->pre(Dumper($self->session));
return $html;
};
デフォルト値については、session_configメソッドの説明を見てください。 ただし、ディレクトリはFile::Specモジュールのtmpdirメソッドが返すディレクトリが使われます。例えば、Windowsでは環境変数の変更などをしていなければ、"/tmp"ではなく"C:\temp"が使われます。
セッションデータの保存ディレクトリ指定は、session_configメソッドを使用。CGI::Application::Plugin::Sessionドキュメントによれば、これはcgiapp_init内で実行するのが良いようです。
#!perl
package main;
use CGI::Carp qw(fatalsToBrowser);
my $app = CGI::SessionTest->new;
$app->run;
package CGI::SessionTest;
use strict;
use base qw(CGI::Application);
use CGI::Application::Plugin::Session;
use Data::Dumper;
local $Data::Dumper::Indent = 1;
local $Data::Dumper::Sortkeys = 1;
our $VERSION = '0.01';
sub cgiapp_init {
my $self = shift;
$self->SUPER::cgiapp_init(@_);
$self->session_config(
CGI_SESSION_OPTIONS => [ "driver:File", $self->query, {Directory=>'./session'} ],
COOKIE_PARAMS => { -path => '/', },
SEND_COOKIE => 1,
);
}
sub setup {
my $self = shift;
$self->start_mode('s');
$self->mode_param('mode');
$self->run_modes(
's' => \&do_start
);
}
sub do_start {
my $self = shift;
my $count = $self->session->param('count');
$count++;
$self->session->param('count' => $count);
my $html = "count : $count";
$html .= $self->query->pre(Dumper($self->session));
return $html;
};