2013-06-28 2 views
0

perl-cgi를 처음 사용합니다. 나는 cgi-perl을 사용하여 세션을 만들고 쿠키를 설정하고있다. 하지만 세션의 가치를 검색 할 수 없습니다. 나는 또한 page1과 page2의 코드를 붙이고있다. 누구든지 코드를 편집하고 실수가 어디 있는지 말해 주실 수 있습니까? 나는 코드에 언급 된 디렉토리에 세션을 저장할 수 있으며 값도 존재한다.perl cgi 세션을 다른 페이지로 가져올 수 없습니다.

페이지 1 :

#!c:/perl/bin/perl.exe       
use strict;       
use CGI qw/:standard/;     
use CGI::Session qw/-ip-match/;    
use CGI;     
use DBI;    
use CGI::Cookie;      
use CGI::Carp qw(fatalsToBrowser);      
print "Content-type: text/html\n\n";      
print "created Session";     
my $session = new CGI::Session(undef, undef, {Directory=>'c:/temp/session/'});      
#setting session to expire in 1 hour        
$session->expire("+1h");         
#store something       
$session->param("value1","yakub");        
#write to disk         
$session->flush();       
my $cookie1 = new CGI::Cookie(-name=>'CGISESSID',-value=>$session->id); 
print "Set-Cookie: $cookie1\n";         

페이지 2는 :

#!c:/perl/bin/perl.exe   
use CGI::Cookie;    
use CGI::Session;     
use CGI;     
use DBI; 
use CGI::Carp qw(fatalsToBrowser);      
print "Content-type: text/html\n\n";      
my $cgi = new CGI;      
#try to retrieve cookie.       
$sid = $cgi->cookie('CGISESSID') || $cgi->param('CGISESSID') || undef;          
$session = load CGI::Session(undef, $sid, {Directory=>'c:/temp/session/'});      
$name = $session->param("value1");    
print $name;        
+0

당신이 쿠키를 받습니까? 그것은 확인해야 할 첫 번째 것이 될 것입니다. – ikegami

+0

예 쿠키도 받았습니다 – yakub

+0

아니요. 브라우저에서 쿠키를 보았지만 브라우저에서 쿠키를 보지 못했습니다. – innaM

답변

0

당신은 당신이 쿠키를받은 귀하의 코멘트했다. 이것은 동시에 진실이고 거짓입니다.

print "Content-type: text/html\n\n";      
print "created Session";     
... 
print "Set-Cookie: $cookie1\n";    

당신이 가장 먼저하는 일이 클라이언트에 HTTP 헤더를 인쇄 할 수 있습니다 :

귀하의 문제는 첫 번째 줄입니다. 그런 다음 새 줄이 나오지 않은 거짓말을 인쇄 한 다음 다른 http 줄 번호 줄을 인쇄합니다.

당신은 모든에게 HTTP 헤더 및 응답의 몸을 구성하는 것입니다 인쇄 아무것도 인쇄 할 필요가있다. 머리글과 본문/내용은 빈 줄로 구분해야합니다.

(우리는 그것을있는 동안, 당신은 또한 호출하는 방법을 적은 고대의 스타일을 사용할 수 있습니다)

#!c:/perl/bin/perl.exe 
use strict; 
use warnings; 

use CGI qw/:standard/; 
use CGI::Session qw/-ip-match/; 
use CGI::Cookie; 
use CGI::Carp qw(fatalsToBrowser); 

my $session = CGI::Session->new(undef, undef, {Directory=>'c:/temp/session/'}); 

#setting session to expire in 1 hour 
$session->expire("+1h"); 

#store something 
$session->param("value1","yakub"); 

#write to disk 
$session->flush(); 

my $cookie1 = CGI::Cookie->new(-name=>'CGISESSID',-value=>$session->id); 

print "Set-Cookie: $cookie1\n"; 
print "Content-type: text/plain\n\n"; 
print "created Session\n"; 
+0

print 대신'-type'과'-cookie' 키를 사용하여'header' 메소드를 사용하십시오. – daxim

+0

고맙습니다 innaM 지금 당장 ... 코딩하는 동안 조심하겠습니다 :) – yakub

관련 문제