Cookieを削除するには、単純に有効期限を現在よりも過去に設定してやれば良い。
サンプル
#!/usr/bin/perl ;# ;#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などでユーザーのパソコンの時間を取得し、そこから減算をしてやれば良い。そこまでする必要があるかどうかは疑問ではあるが。