Perlモジュールについて
レス数が900を超えています。1000を超えると表示できなくなるよ。
0930926
2006/03/32(土) 23:40:24ID:OoUxyhRhそれだと普通にCGI::Cookieを使ったのと同じだから、意味がないよ。
問題はCGI::Sessionの_str2secondsルーチンで生成される値が不正ってことなんだけど、その書き方だと、この問題の値が出力されないはず。
$session->cookie(-expires => '+1d'); だと、CGI::Sessionが内部で持ってるCGI::Cookieを使うだけだから、上に書いた「直接CGI::Cookieを呼ぶ」のと同じになる。
しかもheaderメソッドは与えられた引数を自前パラメーターの後に付けてそのままCGIに渡すから、
->header(-cookie => $cookie);
と書くと、内部では、
->header(-cookie => 問題の値, -cookie => $cookie);
ってcookieが2回になる→2回目のやつで上書きされる→_str2secondsの値がCGI::Cookieの正しい値で上書きされる
ということになる。
このあたり、ヘタな説明よりソース見たほうが早いかも。
で、ソースを見ると、バージョン3.9Xより上のバグみたい。
というより、3.9X以下はそもそもヘッダにexpireを出さない。
とにかくexpireの値がheaderで正しくHTTP Headerに変換されないってだけだから、コードはこんな感じ。
use CGI::Session;
$session = new CGI::Session();
$session->expire('+1d');
print $session->header();
結果
Set-Cookie: CGISESSID=c6458e〜; path=/; expires=86400s
Date: Sat, 01 Apr 2006 14:21:46 GMT
Content-Type: text/html; charset=ISO-8859-1
イチオ結果教えて
レス数が900を超えています。1000を超えると表示できなくなるよ。