perl - issues with CGI::Minimal -
my existing code works fine vanilla cgi
#!/usr/bin/env perl use strict; use cgi; use cgi::carp qw/fatalstobrowser warningstobrowser/; use cgi::session; ( $session, $cgi); $cgi = new cgi(); $cgi->charset('utf-8'); $session = new cgi::session( "driver:file;serializer:storable", $cgi, { directory => '../home/tmp' } ); $session->expire( 'authorized', '1440m' ); changing on cgi::minimal causes cgi::session error out
#!/usr/bin/env perl use strict; use cgi::minimal; use cgi::carp qw/fatalstobrowser warningstobrowser/; use cgi::session; ( $session, $cgi); $cgi = cgi::minimal->new; $session = new cgi::session( "driver:file;serializer:storable", $cgi, { directory => '../web/tmp' } ) or or die cgi::session->errstr(); $session->expire( 'authorized', '1440m' ); the error
can't call method "expire" on undefined value @ /var/webserver/iris/htdocs/index.cgi line 13. edit: after or die cgi::session->errstr() added
new(): failed: query object cgi::minimal=hash(0x9916a64) not support cookie() , param() methods: not sure causes this, appreciate insight.
since cgi::minimal indeed rather minimal you'd have handle cookies , pass manually retrieved session_id, instead of cgi object, cgi::session constructor.
use warnings; use strict; use cgi::cookie; use cgi::minimal; use cgi::carp qw/fatalstobrowser warningstobrowser/; use cgi::session; $cgi = cgi::minimal->new(); %cookies = cgi::cookie->fetch; $session_id; if( defined $cookies{'session_id'} ){ $session_id = $cookies{'session_id'}->value; } $session = cgi::session->new( "driver:file;serializer:storable", $session_id, { directory => '../web/tmp' } ) or die cgi::session->errstr(); $session->expire( 'authorized', '1440m' ); $session_cookie = cgi::cookie->new(-name => 'session_id',-value => $session->id()); print $session->header(-cookie=>[$session_cookie]); print 'ok session_id: ' . $session->id();
Comments
Post a Comment