cookie を使うとユーザのアクセス情報をクライアント側に保存し、 それを次回以降のアクセス時に利用することができます。
cookie は、
document.cookie = string;
とすることで、string
を保存することができます。フォーマットは次のようです。
string :
"item_1=value_1;item_2=value_2; … ;item_n=value_n"
例えば次のようにします。
document.cookie =
"nvisits=1;expires=Sun, 1 Mar 1998 01:28:29 UTC";
cookie には上のように有効期限を付けないと、無効になってしまいます。 上の例では日本時間の 98/3/1 10:28:29 に有効期限切れとなります。 日時を表わす文字列は toGMTString メソッドを使って作ってください。
実際には次のようなコードを書きます。
本当は Internet Explorer 3.0 対策のコードを書いていますが、 分かりやすくするために省略しています。
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
//引数のitemに対応するvalueを返す。
function getCookie(item) {
var i, index, arr;
arr = document.cookie.split(";");
for(i = 0; i < arr.length; i++) {
index = arr[i].indexOf("=");
//2番目は頭がスペースのとき
if(arr[i].substring(0, index) == item ||
arr[i].substring(0, index) == " " + item)
return arr[i].substring(index + 1);
}
return "";
}
//cookieを保存
function setCookie(item, value, d) {
document.cookie = item + "=" + value + ";expires=" + d;
}
</SCRIPT>
</HEAD>
<BODY>
……
<SCRIPT LANGUAGE="JavaScript">
var n, d, previsit, expire;
if(document.cookie != "") { //2回目以降
n = getCookie("nvisits") - (-1);
document.writeln(n + "回目の訪問です。<P>");
predate = getCookie("previsit");
document.writeln("前回の訪問は " + predate + "<P>");
}
else { //初めて
document.writeln("初めての訪問です。<P>");
n = 1;
}
d = new Date();
previsit = d.toGMTString();
d.setTime(d.getTime() + 24*60*60*1000); //24時間後
expire = d.toGMTString();
setCookie("nvisits", "" + n, expire);
setCookie("previsit", previsit, expire);
</SCRIPT>
……
</BODY>
2回目以降のアクセスなら cookie から前回までのアクセス回数、
前回アクセスの日時の情報を得ます。
そのあと、インクリメントしたアクセス回数と
現在の時刻を cookie に保存します。