トップ > Perl Tips > クッキーを使おう


 ■ クッキーを使おう

「クッキー」というのは、ブラウザが自分のコンピュータに
一時的にデータを書き込み、ファイルとして保存する仕組みです。
Netscape Communicationsによって開発されたものです。

このクッキーファイルは以下のようなフォルダ・ファイルに保存されます。
OSやブラウザによって多少異なります。
C:\Document and Settings\ユーザ名\Cookies
C:\Program Files\Netscape\Users\UserName\cookies.txt
C:\Program Files\Netscape\Navigator\cookies.txt
C:\Windows\Cookies\***.txt

ブラウザの設定でクッキーが利用できないこともあります。
この場合は各自設定を変え、利用できるようにしてください。

クッキーの書き込みは、HTMLのメタタグ、JavaScriptなどでもできますが、
今回は、"Set-Cookie"というヘッダーを使います。

<クッキー書き込みスクリプト>


#!/usr/bin/perl

$cookie = "表\示されましたか?";
$cookie =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;

print "Content-type: text/html\n";
print "Set-Cookie: test=$cookie\n\n";
print "書き込み終了";



<クッキー読み込みスクリプト>
#!/usr/bin/perl

foreach (split(/;/, $ENV{'HTTP_COOKIE'})) {
($name, $value) = split(/=/);
$name =~ s/\s//g;
$value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
$cookie{$name} = $value;
}

print "Content-type: text/html\n\n";
print "クッキーの中身:$cookie{'test'}\n";



<解説>

<書き込みスクリプト>
$cookie = "クッキーに書き込む文字列";
ここで、書き込む文字列を指定します。

$cookie =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
ここで、書き込む文字列のエンコードをします。
URL エンコードという方法を使います。

print "Set-Cookie: クッキーの名前=値; expires=値; domain=値; path=値; secure\n\n";
・クッキーの名前=値
必須項目です。好きな名前、好きな値を指定します。
・expires=値
クッキーの有効期限です。
Wed, 31-Dec-2003 23:59:59 GMT(グリニッジ標準時の2003年12月31日 23時59分59秒)
のような形で指定する必要があります。
省略した場合、有効期限はブラウザが閉じられるまでとなります。
過去の日時を指定するとCookieが削除されます。
「無期限」にしたい場合、2038年以降の日付が扱えないシステムもあるため、
それ以前(例:2030年)の日時を指定しておきます。
・domain=値
このクッキーを発行したサーバーのドメイン名を指定します。
省略しても自動で指定されます。
・path=値
指定したパスにマッチするページを参照したときに、クッキーが有効になります。
省略しても自動で指定されます。
・secure
これがあると、サーバーとの接続がセキュアであるときのみ、クッキーが有効になります。

<読み込みスクリプト>
$ENV{'HTTP_COOKIE'}
この変数(環境変数)にクッキーの値が代入されています。

$value =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C", hex($1))/eg;
ここでデコードします。

<動作サンプル>
書き込み
読み込み

応用編:訪問回数を表示




トラックバック

このエントリーのトラックバックURL:
http://easycgi.xrea.jp/mt-tb.cgi/43