0

CGI::Sessionセッションデータを保存するために使用していますCGI::Application(具体的CGI::Sessionには、モジュールを介して使用していCGI::Application::Plugin::Sessionます)。アプリケーション モードの 1 つで、次のようにします。

    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パラメータをセッションに保存するだけの場合は、次のようにします。

# $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 に答える