首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CGI::Minimal的问题

CGI::Minimal的问题
EN

Stack Overflow用户
提问于 2015-07-07 22:43:14
回答 1查看 111关注 0票数 0

我的现有代码在普通cgi上工作得很好

代码语言:javascript
复制
#!/usr/bin/env perl
use strict;
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use CGI::Session;

my ( $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' );

切换到CGI::Minimal会导致CGI::Session出错

代码语言:javascript
复制
#!/usr/bin/env perl
use strict;
use CGI::Minimal;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use CGI::Session;

my ( $session,  $cgi);

my $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' );

错误

代码语言:javascript
复制
Can't call method "expire" on an undefined value at /var/webserver/iris/htdocs/index.cgi line 13.

编辑:添加or die CGI::Session->errstr()

代码语言:javascript
复制
new(): failed: query object CGI::Minimal=HASH(0x9916a64) does not support cookie() and param() methods: 

不太确定是什么导致了这一点,真的很感谢你的见解。

EN

回答 1

Stack Overflow用户

发布于 2015-07-10 18:20:27

由于CGI::Minimal确实是相当小的,所以您必须自己处理Cookie,并将手动检索的session_id而不是cgi对象传递给CGI::Session构造函数。

代码语言:javascript
复制
use warnings;
use strict;

use CGI::Cookie;
use CGI::Minimal;

use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use CGI::Session;

my $cgi = CGI::Minimal->new();

my %cookies = CGI::Cookie->fetch;

my $session_id;

if( defined $cookies{'SESSION_ID'} ){
   $session_id = $cookies{'SESSION_ID'}->value;
}

my $session = CGI::Session->new(
  "driver:File;serializer:Storable",
  $session_id,
  { Directory => '../web/tmp' }
  ) or die CGI::Session->errstr();

$session->expire( 'authorized', '1440m' );

my $session_cookie = CGI::Cookie->new(-name => 'SESSION_ID',-value => $session->id());

print $session->header(-cookie=>[$session_cookie]);

print 'ok with session_id: ' . $session->id();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31271863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档