0

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')我发现只有用户参数包含任何数据,即使其他参数正在发送到服务器端并且可以通过$q->param()从会话中检索到的用户参数访问参数数组,但是我希望这$self->session->param('user')将返回一个包含参数“用户”内容的字符串。
这种行为是预期的吗?
如果是,为什么?

4

1 回答 1

0

我不确定我完全理解你的意思,但这看起来很奇怪。您没有按照CGI::Session 文档所说的去做。您不能只保存 CGI 对象。您需要单独存储每个参数。

# Storing data in the session:
$session->param('f_name', 'Sherzod');

如果您只想将所有 CGI 参数存储在 Session 中,请执行以下操作:

# $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));
}
于 2012-12-07T08:11:23.263 回答