2012-12-06 6 views
0

CGI::Session을 사용하여 CGI::Application의 세션 데이터를 저장합니다 (특히 CGI::Application::Plugin::Session 모듈을 통해 CGI::Session을 사용하고 있습니다). 내 응용 프로그램 모드 중 하나에서 나는이 작업을 수행 :Perl CGI :: Session save_param은 모든 매개 변수를 하나의 키로 배열로 저장합니다.

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') 매개 변수 '사용자'의 내용이있는 단일 문자열을 반환 할 것이라고 기대합니다.
이 동작이 필요합니까?
그렇다면 왜?

+1

데이터 키/값 쌍을 표시 할 수 있습니까? –

+0

'$ self-> session'의 Data :: Dumper 출력은 어떻게 생겼습니까? CGI 객체를 어떻게 저장할 수 있습니까? – simbabque

+0

$ q-> param()의 출력 중 하나를 덤프하는 것이 유용 할 수도 있습니다. – RickF

답변

0

정확히 무슨 뜻인지 잘 모르겠지만, 이상하게 보입니다. 너는 CGI::Session doc이 말한 것을하지 않고있다. CGI 객체를 저장할 수는 없습니다. 각 매개 변수를 개별적으로 저장해야합니다.

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

당신이 당신의 세션에있는 모든 CGI의 PARAMS을 저장하려면,이처럼 수행

# $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)); 
} 
+0

실제로 CGI :: Session 문서에는 "$ query-> param()"이 반환하는 모든 단일 쿼리 매개 변수에 대해 param ($ name, $ value)을 호출하는 것과 같은 save_param 메서드가 포함되어 있습니다. 아직 코드를 파고 들지는 않았지만 CGI : App 쿼리 개체가 param() 메서드로 올바른 작업을 수행하지 못하고 있다고 생각합니다. – RickF

+0

I <3 'perl-d'. –