我正在使用CGI::Session
来存储来自CGI::Application
的会话数据(特别是我通过CGI::Session
模块使用CGI::Application::Plugin::Session
)。
在我的一种应用模式中,我这样做:
my $self = shift;
# Get CGI query object
my $q = $self->query();
$self->session->save_param($q);
要将我的参数保存到会话数据,但是在使用$self->session->param('user')
检索它时,我发现只有user参数包含任何数据,即使其他参数是在服务器端发送的,并且可以通过$q->param()
访问从会话中检索的用户参数是一个参数数组,但是我希望$self->session->param('user')
返回一个包含参数'user'内容的字符串。
是否有这种行为?
如果是这样的话?
答案 0 :(得分:0)
我不确定我到底是什么意思,但这看起来很奇怪。你没有按照CGI::Session doc所说的那样做。您不能只保存CGI对象。您需要单独存储每个参数。
# Storing data in the session: $session->param('f_name', 'Sherzod');
如果您只想在会话中存储所有CGI参数,请执行以下操作:
# $q := CGI object
# $session := CGI::Session object
$session->param('foo', $q->param('foo'));
$session->param('bar', $q->param('bar'));
或者你甚至可以为所有人这样做:
foreach my $key ($q->param) {
$session->param($key, $q->param($key));
}