JavaScript Market - 動きのあるホームページを作る為の各種JavaScript のサンプルと小技集を公開中

JavaScript

JavaScriptって…? | JavaScript応用のツボ | ブラウザについて | JavaScript Market 利用規程 | JavaScript 各種サンプル | JavaScript 小技集

汎用クッキー関数

■ 2002,01,21 汎用性を強化、関数を簡略化
■ 2003,06,25 Gecko に対応

汎用のクッキー関数です。
この関数を使用することで、 簡単に来訪者のブラウザにデータを書き込んだり読み込んだりできます。
関数実行時にクッキー名を指定するので、1つの関数で複数のクッキーデータを扱えます。
尚、スクリプトを簡略化する為、IE3/Netscape3以下のバージョン及び、
2000年問題に対応していないブラウザに対応するルーチンは省略しています。
古いブラウザへの対応が必要な場合はJavaScript小技集#3等を参考に工夫して下さい。

■ 汎用クッキー関数のソース
<script>
// クッキーの有効日数
days = 1;

function get_cookie(cn) {
   get_data = document.cookie;
   cv = new Array();
   gd = get_data.split(";");
   for (i in gd) {
      a = gd[i].split("=");
      a[0] = a[0].replace(" ","");
      cv[a[0]] = a[1];
   }
   if (cv[cn]) return cv[cn];
   else return "";
}

function set_cookie(cn,val) {
   ex = new Date();
   ex = new Date(ex.getTime() + (1000 * 60 * 60 * 24 * days));
   y = ex.getYear(); if (y < 1900) y += 1900;
   hms = ex.getHours() + ":" + ex.getMinutes() + ":" + ex.getSeconds();
   p = String(ex).split(" ");
   ex = p[0] + ", " + p[2] + "-" + p[1] + "-" + y + " " + hms + " GMT;";
   document.cookie = cn + "=" + val +"; expires=" + ex;
}

// Copyright (C) 2001-2002 suepon , All rights reserved.
// Script found at http://suepon.com/
</script>

この関数を<head></head>内に貼り付け、
get_cookie(cookie_name); を実行するとクッキーデータが任意の変数に代入されます。
下の例では、test という名前を付けたクッキーデータをget_data という変数に代入する例です。

<script>
/* クッキーデータを読み込み、任意の変数にクッキーデータを代入 */
get_data = get_cookie("test");
</script>

又、クッキーに付ける名前と書き込みたいデータを引数として
set_cookie(cookie_name,set_data); に渡すとクッキーの書き込みを行います。
下の例では、内容を代入した変数 set_data を、test という名前を付けて書き込みます。

<script>
/* 変数 set_data に書き込みたい内容を代入 */
set_data = "cookie data [" + new Date() + "]";

/* データをクッキーに書き込み */
set_cookie("test",set_data);
</script>

クッキーは、ブラウザを介して来訪者のローカルディスクにデータを記憶させるものです。
クッキーデータは、基本的に書き込んだURLでしか読み込むことができないようにブラウザがガードしています。
クッキーデータの保存先はWindowsでIEなら C:\WINDOWS\Cookies にテキスト形式で格納され、
テキストエディタ(メモ帳等)で自由に見る事ができますが、
これをエディタで書き変えたりすると自動的に破壊され、改ざんできない仕組みになっています。
クッキーを使ってデータを保存するということは、来訪者のハードディスクを間借りする様なものですので、
データはできるだけ小さくまとめ、読み込んでからJavaScriptで使える形に整形するようにして下さい。

又、日本語をクッキーに書き込む場合、IEでは問題有りませんが、
Netscapeでは文字化けするので、escape()を使ってエンコードし、
読み込んでから unescape()でデコードしてやる必要があります。

<script>
/* 取得した内容をデコード */
get_data = get_cookie("test");
get_data = unescape(get_data);

/* 内容をエンコードして書き込み */
set_data = "あいうえお";
set_data = escape(set_data);
set_cookie("test",set_data);
</script>


suepon.com | CGI作成・CGI制作 | ドメイン検索 | バナー自動作成 | Google Dance jp | 松浦亜弥 (H.P.memo) | パソコン | ネイル