Cookieの利用方法について - 読み込み編
Cookieの仕様および書き込む方法について見てきましたが、次は書き込まれたCookieを読み出す方法です。
これは意外にも簡単で、Cookieを呼び出す専用の環境変数を利用します。
Perlでの呼び出し方法(環境変数を利用)
$cook = $ENV{'HTTP_COOKIE'};
ブラウザは先ほどの「Domain」と「Path」が一致すれば、そのサーバーに対してCookieを送り返します。それがサーバーの環境変数である「 $ENV{'HTTP_COOKIE'} 」に格納されるのです。
これを上の例のようにプログラム中で変数に格納して利用します。
Cookieを書き込むためのサンプルプログラム
では、Cookieがどのようにデータをやり取りしているのかを見るために、下のようなプログラムを作成してみました。
このプログラムは適当な内容をCookieとして有効期限を指定して書き込むものです。有効期限内であればブラウザを落としても情報を保持しています。また、削除したい場合には過去の有効期限を指定するとCookieは消えます。
実際にプログラムの中では下記のようにヘッダーとしてCookieを書き込み、環境変数の$ENV{'HTTP_COOKIE'}で読み込むという形をとります。
■書き込み(ヒアドキュメントとして書く場合)
01: print <<HTML;
02: Content-Type: text/html
03: Set-Cookie: IMYLAB=Cookieの内容; expires=有効期限
04:
05: <html>
06: <head>...
07: ・・・
*行番号は便宜的につけたものです。
Perlをメインに紹介してきましたが、JavaScriptやHTMLでもCookieを書き出すことは可能です。
JavaScriptでCookieを扱う場合
「document.cookie="cookieの値";」で書き込み、「変数=document.cookie;」で読み込みます。このCookieの値のフォーマットは先ほどのPerlと同様です。
ちなみに、現在参照しているページでどんなCookieが書き込まれているか見てみたい場合に、アドレス欄に「JavaScript:document.cookie;」と入力してEnterを押すと、そのページで書き込まれたCookieをブラウザで表示できます。
静的なHTMLでCookieを扱う場合
静的なHTMLファイルであっても、「<meta http-equiv="Set-Cookie" content="~">」というメタタグで書き込みは出来ます。この「http-equiv」というのはヘッダーに書き込むのと同等な働きをHTMLファイルレベルで実現するためのもので、Perlの時にヘッダーに書き込んだのと同等ですが、残念ながらHTMLレベルでは読み込む方法がありません。(私が知らないだけかも、、、)
(更新2005/2/12)





