|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
クッキーの設定と取得の方法を研究します。
クッキー。英語では Cookie。お菓子のクッキーです。 なんでクッキーと呼ばれるようになったのかとても不思議なのですが、これ、 ブラウザの機能によって、 ウェブページの訪問者のパソコンの中に保存された、ちょっとしたデータのことです。
えっ、勝手に自分のパソコンになにかデータが保存されちゃうの?っていう感じですが、 実際その通りです。知らないうちに、保存されちゃいます。といっても、 クッキーが保存されるのは決まったフォルダの決まったファイルだけ。 他のファイルを書き換えるとか他のファイルをのぞくとか、そんなことができるわけでは ありません。自分が保存したクッキーだけを読み込めるので、そんなに怖いとかいう ものでもないです。
このページに何回来たとか、前回はいつ来たとか、そういった 軽い情報を訪問者のパソコンに保存しておくことが出来ます。 実用的なものだと、 掲示板などで、名前やメールアドレスなどを最初に入力したら 次から入力しなくてもいい(始めから入力されている)といったこともできます。 登録制(会員制)のページなどで、1回ログインしたら、 次からログインしなくてもいいとか。 多くのサイトで実際に利用されている機能です。
クッキーの設定には、HTTPヘッダを使用します。 今までにでてきたHTTPヘッダは、Content-type と Location、これで3つ目ですね。 次のようなヘッダです。
Set-Cookie: (保存するデータ)
クッキーの保存に関しては、これだけです。 保存するデータはなんでもOK。保存できるデータの大きさは、ちょっと分からなかったのですが、 できるだけ小さくするのがマナーでしょうか。大きければ通信に時間がかかりますし。
保存したクッキーを取り出すには、次のようにします。
$ENV{'HTTP_COOKIE'}
HTTP_COOKIE という名前の環境変数の中に、以前保存したクッキーが入っているわけです。 こちらから、以前保存したクッキーをくださいってブラウザにお願いしなくても、 ブラウザ側で、以前保存したクッキーがあればそれを自動的に送ってきてくれるということです。 ですから、大きなデータを保存してしまうと、通信に余計な負荷がかかっちゃいますね。
クッキーは、保存も読み込みも、簡単ですね。
クッキーには有効期限というものを設定できますが、今回は設定しません。 有効期限を設定しない場合、有効期限はブラウザを閉じるまでとなります。 ブラウザを閉じると、保存されたクッキーは削除されます。
クッキーの保存と読み込みをテストするために、いわゆるクッキーカウンターを作りましょう。 ある訪問者様が、何回CGIプログラムを実行したかっていうことを数えるカウンターです。 クッキーを読み込んで1足して保存する、ということを繰り返します。
#!/usr/bin/perl
$now_cookie = $ENV{"HTTP_COOKIE"};
$new_cookie = $now_cookie + 1;
print "Content-type: text/html\n";
print "Set-Cookie: $new_cookie\n";
print "\n";
print "$new_cookie<br>\n";
print "(リロードしてください)";
次のリンクをクリックしてみてください。 画面に数字が1つ表示されるはずです。 リロードすると1つずつ増えていきます。 ブラウザを閉じると(このページも閉じてください)、クッキーが削除されて 最初からになります。
動きました。クッキーというものについては昔から知っていましたが、 こんなに簡単だったとは。便利ですね。
|
Perl/CGI研究室 'PERL-LABO' TOPへ |
戻る(History.Back) |
| Copyright (c) 'PERL-LABO' All Rights Reserved. リンクフリーです。 |