[Cookie] 削除する (Perl, CGI::Cookie)
Cookieを削除するには、単純に有効期限を現在よりも過去に設定してやれば良い。
;#
;#Cookie削除
;#
use strict;
use CGI::Cookie;
#-- ヘッダ出力 --#
print delCookie('id');
print "Content-type: text/html\n";
print "\n";
#-- 本文出力 --#
print qq|<html>\n|;
print qq| <head><title>Cookieテスト</title></head>\n|;
print qq| <body><h1>Hello World</h1></body>\n|;
print qq|</html>\n|;
#---------------------------------------
#セッションIDをCookieから削除
#---------------------------------------
sub delCookie{
my $name = shift || return; #Cookie名
my $domain = shift || 'ichikoro.com'; #取得可能なドメイン
my $path = shift || '/'; #取得可能なパス
#-- Cookie値削除 --#
my $cookie1 = new CGI::Cookie(-name => $name
, -value => ''
, -expires => 'Fri, 5-Oct-1979 08:10:00 GMT'
, -domain => $domain
, -path => $path
);
return("Set-Cookie: $cookie1\n");
}
○実行結果
Set-Cookie: id=katsube; domain=ichikoro.com; path=/; expires=Fri, 5-Oct-1979 08:10:00 GMT
Content-type: text/html
<html>
<head><title>Cookieテスト</title></head>
<body><h1>Hello World</h1></body>
</html>
注意点としては、『過去』がブラウザ上(パソコン上)の時間に左右される点である。もしもパソコンの時間が1910年などになっていた場合、上記のプログラムは期待通りの結果を得ることが出来ないが、世界中のほとんど、9割以上のユーザーにはこれで対応できるハズだ。
もし厳密にやるのであれば、JavaScriptなどでユーザーのパソコンの時間を取得し、そこから減算をしてやれば良い。そこまでする必要があるかどうかは疑問ではあるが。
