创建 cookie 时可以设置多个参数。
这不仅适用于 Perl 和 CGI,也适用于所有其他开发环境。
我们需要用来设置 cookie 的唯一必需参数是 cookie 名称。
还应提及的其他参数是 cookie 到期日期。
一些浏览器甚至不接受没有到期日期的 cookie,但大多数没有到期日期的 cookie 被接受并且只为当前会话保存。
要创建将保存为多个会话的 cookie,必须设置 cookie 过期时间。
使用以下代码 Perl/CGI 创建一个 cookie:
- 名称: CGI-PERL-COOKIE-EXAMPLE
- 价值:cookie.onitroad.com
- 保质期:一年后
#!/usr/bin/perl -T use strict; use CGI qw/:standard/; my $cookie = cookie( -name=>'CGI-PERL-COOKIE-EXAMPLE', value=>'cookie.onitroad.com', -expires=>'+1y'); print header (-cookie=>$cookie), start_html('CGI Cookie with Exipire Date'), p("Cookie had been saved !\n"), end_html; exit;
将代码保存到 /usr/lib/cgi-bin/expiry-date-cookie.cgi 并使其可执行:
# chmod 755 /usr/lib/cgi-bin/expiry-date-cookie.cgi
如果浏览器允许我们查看所有存储的 cookie,我们应该能够找到我们自己的 cookie。
这是使用 Firefox 浏览器时我的 cookie 的屏幕截图。
要使用 Perl/CGI 检索 cookie,请使用以下代码。
确保我们设置了正确的 cookie 名称:
#!/usr/bin/perl -T use strict; use CGI qw/:standard/; my $retrieve_cookie = cookie('CGI-PERL-COOKIE-EXAMPLE'); print header, start_html, p("Cookie value is $retrieve_cookie\n"), end_html; exit;
以下代码使用与创建 cookie 相同的原则,但规模更大。
创建 cookie 时,我们需要记住,每个域最多只能有 20 个 cookie。
使用以下代码同时创建多个 cookie。
代码首先创建一个标量变量来保存 cookie 定义,然后我们以数组的形式打印包含两个 cookie 的标题。
#!/usr/bin/perl -T use strict; use CGI qw/:standard/; my $cookie1 = cookie(-name=>'cookie_one',value=>'value1',expires=>'+1d'); my $cookie2 = cookie(-name=>'cookie_two',value=>'value2',expires=>'+10y'); print header (-cookie=>[$cookie1,$cookie2]), start_html('CGI Multiple Cookie Example'), p("Cookies received!\n"), end_html; exit;
类似地,下面的代码一次检索多个 cookie:
#!/usr/bin/perl -T use strict; use CGI qw/:standard/; my $retrieve_cookie1 = cookie('cookie_one'); my $retrieve_cookie2 = cookie('cookie_two'); print header, start_html, p("COOKIE_ONE Value: $retrieve_cookie1 \n"), p("COOKIE_TWO Value: $retrieve_cookie2 \n"), end_html; exit;
日期:2020-07-07 20:54:59 来源:oir作者:oir