Cookieの読み書き

  • document.cookieで取り出されるのは、「変数1=値; 変数2=値; ...」なので、値の取り出しは自分で書かないと駄目
  • ほんとは値のescapeがいる

読込み

  myCookie=document.cookie + ";";
  p1=myCookie.indexOf("printername");
  p2=myCookie.indexOf("=",p1);
  p3=myCookie.indexOf(";",p1);
  if(p2-1) {
    cookiePrinter=myCookie.substring(p2+1,p3);
  }

書込み

  • 有効期限を7日にした場合
  • expiresを書かないとメモリのみでディスクに保存されない
  xDay=new Date();
  xDay.setTime(xDay.getTime() + (7*24*60*60*1000));
  tmp="printername=" + document.form1.hoge.value + "; expires=" + xDay.toGMTString();
  document.cookie=tmp;
  • 2つ以上変数を保存したい時は、tmp="〜";document.cookie=tmp;を繰り返す
    • tmp="a=hoge; b=buta;"と書いても駄目。b=butaは無視される

保存されたCookieの中身

  • 保存場所
    • C:\Documents and Settings\ユーザー名\Cookies
  • ファイル名
    • ユーザー名@pathの最後[数字].txt
      • pathの最後は、http://felwithe/cookie/a.htmで記録したなら、cookieとなる
      • http://felwithe/a.htmで記録したなら、felwitheとなる(ホスト名ってこと)
      • 数字はよくわからん。1と2が記録するたび入れ替わる。でも4とかいうのもある。ホストが違うけどpathの最後が重複した時のためみたい。
  • ファイルの中身
    • 1行目が変数名、2行目がその値
    • 3行目がpath
    • 以下、*までなにか不明。期限とかだろう
    • 複数の変数がある時は、以上を繰り返し
      • 期限は変数毎ってこと

参照できる範囲

path

  • 記録する時にpathを変えたい時に使う
  • ホスト名は書かない
  • http://felwithe/cookie/a.htmで下記のように書くと、felwithe/cookie/ではなくfelwithe/のCookieとして保存される
  ck = "hoge=abcdefg; path=/; expires=" + xDay.toGMTString();
  document.cookie = ck;
  • ちなみに上記で、path=/dokkan/ とか書くと、Cookieは書けるけど参照できなくなってしまう