当我尝试进入"if cookie exists then redirect"功能时,它不会进入.
#!/usr/bin/perl -I/srv/www/abc/m/www
require "api";
my $db = db();
use CGI;
use DBI;
use strict;
use warnings;
#use CGI qw( :standard -nph );
# read the CGI params
my $cgi = CGI->new;
my $cookie = $cgi->param("loggedin");
#my $cookie = $cgi->cookie("loggedin");
if ( $cookie ) {
print $cgi->redirect("http://host.com");
exit;
}
...
if ( $userID ) {
$cgi->cookie( -name => 'loggedin', -value => '1' ,-expires => '+4h', -path => '/' );
print $cgi->redirect("http://host.com");
exit;
}
Run Code Online (Sandbox Code Playgroud)
我想确定我在页面底部设置的cookie是否存在,如果存在,则执行重定向.此代码在if ( $cookie )块内.
阅读此处以了解如何设置和获取 Cookie.基本上:
-value,创建一个cookie.它必须传递给header或redirect实际设置它.-value,则返回cookie的值.设置cookie:
my $cookie = $cgi->cookie( -name => 'loggedin',
-value => '1',
-expires => '+4h',
-path => '/' );
print $cgi->header(-cookie=>$cookie);
Run Code Online (Sandbox Code Playgroud)
检索cookie:
my $cookie = $cgi->cookie('loggedin'); # Short for: $cgi->cookie( -name=>'loggedin' )
if ($cookie) {
# cookie "loggedin" was set
}
Run Code Online (Sandbox Code Playgroud)
设置cookie并重定向:
my $cookie = $cgi->cookie( -name => 'loggedin',
-value => '1',
-expires => '+4h',
-path => '/' );
print $cgi->redirect(
-uri => 'http://host.com',
-status => 302,
-cookie => $cookie
);
Run Code Online (Sandbox Code Playgroud)
删除cookie并重定向:
my $cookie = $cgi->cookie( -name => 'loggedin',
-value => '',
-expires => '-1d' );
print $cgi->redirect(
-uri => 'http://host.com',
-status => 302,
-cookie => $cookie
);
Run Code Online (Sandbox Code Playgroud)
请注意,设置cookie和同时重定向是依赖于浏览器和/或Web服务器.