나는 perl을 매우 신형입니다. 내 양식 페이지로 리디렉션하기 전에 쿠키를 설정해야하는 간단한 로그인 스크립트를 만들었습니다. 내가 생각할 수있는 모든 것을 시도했지만 Safari에서는 쿠키가 설정되지 않습니다. 몇몇 게시물은 약간의 유사점을 보여 주며 모두 시도했습니다.Perl CGI :: Safari에서 쿠키가 설정되어 있지 않습니다.
내 코드 : 내가 필요한 모든 이리저리 CGI 보이는의 구현했습니다
my $userQuery = "SELECT user_name , password FROM egi_users WHERE user_name = '$username' AND password = '$cryptword'";
my $result = $dbh->prepare($userQuery);
$result->execute()or die "MYSQL ERROR : $DBI::errstr\n";
my $rows = $result->rows;
if($rows == 1){
#login is valid. Create cookie and send to patient_data page.
#print("success\n");
my $c = CGI::Cookie->new(-name=>'login_access',
-value=>$username,
-expires=>'+1h');
print $q->redirect(-uri=>'http://mytestserver.com/cgi/patient_data.pl' , -status => '301' , -cookie => $c);
}else{
print $q->redirect(-uri=>'http://mytestserver.com/);
}
;
CGI; CGI :: Carp ... CG :: Session을 사용하십시오. CGI :: Cookie를 사용하십시오.
스크립트의 유효성을 올바르게 검사하고 리디렉션되지만 쿠키가 설정되지 않습니다. 내가하는 일을 잘 모르겠습니다. 당신이 접근법에 더 좋은 제안을한다면, 도 좋을 것입니다.
왜 CGI 모듈을 사용하는 대신 자신의 헤더를 인쇄하고 있습니까? 왜 HTTP 리디렉션 대신 JavaScript 리디렉션을 사용합니까? – friedo
http 리디렉션을 사용해 보았는데 헤더가 인쇄 된 후 작동하지 않는 것 같습니다. 따라서 페이지 중간에서 리디렉션이 필요한 경우 JS 메서드 만 사용할 수 있습니다. CGI로 헤더를 인쇄하는 것까지, 나는 어제 그것을 처음으로 보았습니다. – Miek
HTTP 리디렉션 *은 * 헤더입니다. – friedo