CGIでセッションを使用する
#!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Cookie; use CGI::Session; my $q = CGI->new; # セッションIDを取得 my $sid = $q->param("CGISESSID") || undef; # セッションIDからCGI::Sessionオブジェクトを作成 my $session = CGI::Session->new(undef, $sid, {Directory => "./tmp"}); # セッションから任意のデータを取り出す my $count = $session->param("count") || 0; $count++; # セッションにデータを保存 $session->param("count", $count); # セッションIDをCookieで送信 print $q->header( -cookie => CGI::Cookie->new(CGISESSID => $session->id()) ); print $count;
セッションIDの変わりにCGIオブジェクトを渡して、ヘッダの出力をCGI::Sessionにやらせると、セッションIDの管理を自動化できる。
#!/usr/bin/perl use strict; use warnings; use CGI; use CGI::Cookie; use CGI::Session; my $q = CGI->new; # CGIオブジェクトからCGISESSIDというCookieを読み取り、それをセッションIDとして使う my $session = CGI::Session->new(undef, $q, {Directory => "./tmp"}); my $count = $session->param("count") || 0; $count++; $session->param("count", $count); # CGISESSIDというCookieにセッションIDを出力 print $session->header; print $count;