CGI.pm-3.49.tar.gz
FCGI-0.68.tar.gz
Test-Simple-0.94.tar.gz
★おくりて
# 有効なセッションIDを取得
$CGISESSID = $session->id();
# セッションにデータを格納
$session->param('user_id', $user_id);
# or
#$session->param(-name=>'l_name', -value=>'Ruzmetov');
# データの回収
#my $f_name = $session->param('f_name');
# または
#my $l_name = $session->param(-name=>'l_name');
# 特定セッションパラメータのクリア
#$session->clear(["_IS_LOGGED_IN"]);
# '_IS_LOGGED_IN'フラグは10分間アイドルした後期限切れになります
#$session->expire(_IS_LOGGED_IN => '+10m');
# セッションそのものが1minutesアイドルした後期限切れになります
$session->expire('+1m');
# セッションを削除したほうが良いでしょう
#$session->delete();
$querry->header(
-cookie=>$querry->cookie(-name=>'CGISESSID',
-value=>$CGISESSID)
);
#print $querry->redirect("/cgi-bin/receiveSession.pl?CGISESSID=$CGISESSID");
★うけて
#!/usr/bin/perl
use strict;
use CGI;
use CGI::Session qw/-ip_match/;
my $cgi=CGI->new;
my $sid=$cgi->cookie('CGISESSID')||$cgi->param('CGISESSID')||undef;
#1.cookieからCGISESSIDを探す
#2.cookieから取れなかったらurlパラメータを探す.
#3.どちらも取得できなかったらundef.
my $session=CGI::Session->new(undef,$sid,{Directory=>'./tmp'});
#4.取得したセッションidが有効ならそのまま.無効なら別のidを発番.
print $cgi->header(-charset=>'euc-jp'),
$cgi->start_html(-lang=>'ja',
-encoding=>'euc-jp',
-title=>'CGI.pm使用/遷移先');
if(defined $sid && $sid eq $session->id){
#cookieかurlパラメータから値を取得でき,かつ有効なid
print $cgi->p('セッションは有効
',
'session id: '.$session->id.'
',
'user_id: '.$session->param('user_id'));
}
elsif(defined $sid && $sid ne $session->id){
#cookie,またはurlパラメータから値を取得できた.しかしidとしては無効
print $cgi->p('セッションは無効
',
'$sid: '.$sid.'
',
'$session->id: '.$session->id);
#不要なidはさっさと消去
#先にcloseをしないと,deleteで
#'(in cleanup) could not flush: Couldn't unlink .session/cgisess_CGISESSID'
#が発生する.エラーが出てもファイルは消える.
#closeは遅いらしい
$session->close;
$session->delete;
}
else{
#cookie,またはurlパラメータから値を取得できない.
print $cgi->p('セッションなし
',
'$sid: undefined'),
}
print $cgi->end_html;
#end
0 件のコメント:
コメントを投稿