2009年3月19日木曜日

[perl] CGI.pmでクッキー設定

やりたかったのはこれ。
ーーー
my $cookie1 = $query->cookie( -name =>'id',
-value =>'test',
-expires=>'+1d');
my $cookie2 = $query->cookie( -name =>'pw',
-value =>'test',
-expires=>'+1d');
print "Set-Cookie: $cookie1;\n";
print "Set-Cookie: $cookie2;\n";
print "Location: main.cgi\n\n";
ーーー


以下参考。
http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi/free?page=CGI.pm
ーーー

まずクッキーのセットから。以下のコードでCookieヘッダを出力します。

my $cookie = $cgi->cookie(-name   =>'hoge',
-value =>'fuga',
-expires=>'+1h');
print $cgi->header(-cookie=>$cookie);

cookieメソッドは他にも以下のようなオプションを与えることができます。

  • -path(このクッキーが有効になるパスの一部)
  • -dommain(このクッキーが有効になるドメインの一部)
  • -secure(1を指定するとSSLでのみクッキーが使用されます)

また、-valueにはスカラだけでなく配列リファレンス、ハッシュリファレンスをセットすることもできます。

my $cookie=$query->cookie(-name =>'list',
-value=>\@list);

expiresにはクッキーの有効期間を設定します。+10s、+10m、+10h、+10dでそれぞれ10秒後、10分後、10時間後、10日後になります。省略するとセッション限りのクッキーとなります。また、マイナスを指定するとクッキーは削除されます。

クッキーの取得はとても簡単です。

my $cookie = $cgi->cookie(-name=>'hoge');
print $cookie;

0 件のコメント: