[PerlChina] CGI::Session的问题
黄叶
hylinux at gmail.com
Tue Jun 6 21:46:13 PDT 2006
Session的标识是通过cookie来发送的。
这个问题。我这样来描述:
package Web::Action
use strict;
use warnings;
use CGI::Session;
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
sub new {
my $class = shift;
my $this = {};
$this->{'q'} = CGI->new;
$this->{'session'} = CGI::Session->new;
bless $this, $class
}
....
1;
另一个子类
package Web::Action::Request;
use strict;
use warnings;
use base qw/Web::Action/;
sub new {
my $class = shift;
my $this = $class->SUPER::new;
bless $this, $class;
}
#注意这个方法
sub run {
my $this = shift;
if ( $this->{'q'} == 'something' ) {
my $module = Web::Action::Request::SomeModule->new;
$module->run;
}
}
1;
给出SomeModule的大概实例
注意:该类也是Web::Action的子类
package Web::Action::Request::SomeModule;
use strict;
use warnings;
use base qw/Web::Action/
sub new {
my $class = shift;
my $this = $class->SUPER::new;
bless $this, $class
}
sub run {
my $this = shift;
$this->{'session'}->param('name', 'value');
# 这个时候是可以看到session刚加的值的。
print Dumper($this->{'session'});
}
1;
在类:Web::Action::Requst::SomeModule里可以打印出我们需要的值,就是我用param加的。
但是再在其他的任何地方打印,就会发现这个值不存在了。
比知道是不是CGI::Session的bug.
我有查文档,其中有个方法引起了我的注意: flush, 它的说明是无需我们手动调用,
会在一个引用结束后自动调用,但是我的代码码嵌套了引用。不知道会不会是这个原因引起的。
请各位指教。
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.pm.org/pipermail/china-pm/attachments/20060607/638d14d0/attachment.html
More information about the China-pm
mailing list