COOKIE


COOKIEとは

一般にコンピュータのアプリケーションは、データをディスクに保存し、それを 取り出して活用し、データーを最新に更新しまたディスクに保存しておく、 と言うようにディスクへの書込みが頻繁にされる。
ところがブラウザからはディスクへの書込みができない、読み出し専用になっている。
一つだけ例外として「COOKIE」ファイルに決められた書式に限り記憶させておくことが出来るようになっています。

COOKIEを体験してみよう。
現在の記憶内容を表示 書き換える内容を入力
右の窓に何か書込んで「書換」ボタンをクリックしてみよう。
このパソコンのCOOKIEファイルに書込まれたので、 左の窓にその内容が表示されました。
次にブラウザ自体のメニューバーにある「更新」をクリックしてください。
更新しても左窓に消えずに入力した内容が残っていますね!、
COOKIEファイルから読みだして表示させたからです。

別のページにジャンプしてみよう。

別のページにジャンプしたらどうなるだろう。

ここをクリックしてください

左窓の内容が別のページでも使えることが分かったと思います。
今は同じURL(フォルダー)内の別ページでしたので
次は別のURLのページにジャンプしてみましょう。
初めは1階層下の子フォルダーにあるページにジャンプしてみます。

ここをクリックしてください

ここでも使えることが判りました。
それでは別の階層ではどうでしょう。
兄弟の階層でトライしてみますと。

ここをクリックしてください

ここまでは使えませんでした。
整理してみると「◎」で設定したCOOKIEの有効範囲は
   ├ ◎ ┬ 〇
   │    ├ 〇
 ×┤    ├ 〇
   │
   ├ × ┬ ×
   │    ├ ×
という事のようです。

ブラウザを閉じたら。

今使っているブラウザを閉じて、再度ブラウザを開いて、このページに来てください。
COOKIEの内容が消えてしまっていたのではないでしょうか。
今までのCOOKIEは
<script language="javascript"> document.cookie="入力したデータ"; <script> で記憶させ
<script language="javascript"> dt=document.cookie; <script> で読み出す。

という簡単なJavaScriptの記述でした。
これでも色んな使い道はあるし、終わったときにごみが残らない長所もあります。
ブラウザを閉じても、後日来たときに使えるように記憶しておけないだろうか。
これはCOOKIEの有効期限を設定してやれば可能です。
次の窓では1分間有効になるよう設定してあります。
右の窓に入力してボタンをクリックしてください。
現在の記憶内容 書き換える内容
ブラウザを閉じて、1分以内に再度開いて右側の窓を確認してください。
COOKIEは残っていたと思います。
1分経過してからもう一度閉じて開いてください。
今度は消滅しているはずです。
有効期限付きでCOOKIEに記憶させるのは
<script language="javascript"> document.cookie="入力したデータ; expires=Fri, 31-Dec-2030 23:59:59;"; <script> というようにグリニッジ標準時で書きます。
この例では2030年末まで有効ということになります。

文字化け対策

漢字を記憶させると一部のブラウザで文字化けが発生しました。
その対策としはアスキーコードにescape()で変換して記憶させるとよいでしょう。
その記述は
<script language="javascript"> tmp="入力したデータ"; document.cookie=escape(tmp); <script> で記憶させ、読み出しはそのままでよいと思います。

ブラウザを変えたら。

インターネットエクスプローラをネットスケープに変えたらどうなるか
それぞれのブラウザが独自の形式でCOOKIEファイルを作っています、 このため別のブラウザで設定したCOOKIEは取り出せません。
ブラウザをかえると、そのブラウザ用にもCOOKIEを設定しなければなりません。

多項目の記憶

記憶したいデーターが複数ある場合も対応できる、汎用的なソースを紹介しておきます。
//cookie読出
function getCookie(key){
	tmp=document.cookie+";";
	tmp1=tmp.indexOf(key,0);
	if(tmp1!=-1){
		tmp=tmp.substring(tmp1,tmp.length);
		start=tmp.indexOf("=",0)+1;
		end=tmp.indexOf(";",start);
		return(unescape(tmp.substring(start,end)));
	}
	return("");
}

//cookie記憶
function setCookie(key,val){
	tmp=key+"="+escape(val)+";";
	tmp+="expires=Fri,31-Dec-2030 23:59:59; ";
	document.cookie=tmp;
}

記憶させるときは
setCookie("データ名",データの値);
データの値に変数を使うことも、もちろん可能です。

読み出すときは
変数 = getCookie("データ名");
とすると「変数」にデータの値が取り込めます。


COOKIEを何を使った事例

電子ショッピング
ページを移動しても買物篭のように買ったものを一時記憶しておき、レジのページでサーバーに転送して注文する。

掲示板(事例)
氏名、eメールアドレス、ホームページアドレス等をプレ入力

歓迎メッセージや訪問者カウンター(事例)
訪問者の名前入りで歓迎のメッセージを表示したり、
訪問者毎に訪問回数をカウントして表示する。

バイオリズム(事例)
個人の生年月日を記憶しておいて当月のバイオリズムを即表示する。

ユーザー環境で再現(事例)
ユーザーの設定したサイズで次回から表示する。

ユーザーBGMの設定(事例)
訪問者がBGM(無音も含め)を設定し次回もそのBGMを鳴らす。

QPONホームへ