Here is the first page that is called when the "Submit" button is clicked and "User ID and Password" is passed (via the POST method):
use CGI qw/:standard/;
use CGI::Cookie;
print "<html><head>\n\r<title>Validating</title></head><body>";
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $request,$ENV{'CONTENT_LENGTH'}) or die "Could not get
+ query\n";
}
@parameters = split(/&/,$request);
foreach $p (@parameters){
$p =~ s/\+/ /g;
($para,$value) = split(/=/,$p);
$para =~ s/%([0-9A-F][0-9A-F])/pack("c",hex($1))/ge;
$value =~ s/%([0-9A-F][0-9A-F])/pack("c",hex($1))/ge;
$PAIRS{$para} = $value;
}
if($PAIRS{"login_id"} eq("admin") && $PAIRS{"login_password"} eq("go")
+){
$login_cookie = new CGI::Cookie(-name=>'loginID',-value=>'a
+dmin');
$password_cookie = new CGI::Cookie(-name=>'loginPassword',-valu
+e=>'go');
header(-cookie=>[$login_cookie,$password_cookie]);
print "<script type='text/javascript'>
<!--
window.location = 'work_with_cookies.pl';
//-->
</script>";
}
else{
print "<script type='text/javascript'>
<!--
window.location = 'admin_login.html';
//-->
</script>";
}
print "</body></html>";
And here is the Perl program that is called after creating the cookies:
work_with_cookies.pl
use CGI qw/:standard/;
use CGI::Cookie;
print ("<html><head>\n\r</head><body>");
%cookies = CGI::Cookie->fetch;
print $cookies{"loginID"};
print $cookies{"loginPassword"};
print "<hr />";
print ("</body></html>");
But I am getting nothing on the above page except the Horizontal Line. On the previous page if I use "print" before the "header" then I get the credentials as well as the other stuffs mixed with them as posted in the original post above.
I repeat my question/problem: I am not able to set cookies and fetch/use them from/on the some other page that requires to validate the credentials before displaying its contents. |