Perl CGI :: Session save_param将所有参数保存为一个键下的数组

时间:2012-12-06 21:22:31

标签: perl cgi cgi-application

我正在使用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'内容的字符串。
是否有这种行为? 如果是这样的话?

1 个答案:

答案 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));
}