Cookieのサンプルソースで、前回の訪問日だけを表示させるには?

[上に] [前に] [次に]
YUFU [E-Mail] [HomePage] 1999/03/31(水) 19:03:25
初めまして。Cookieのサンプルコードをみて、前回の訪問日だけを表示させようと試みました。
一応、下記ソースでできたのですが、もう少しサイズが小さくならないでしょうか?
又、Cookieの有効期限を、「最終訪問日 + 3ヶ月」等とするにはどうすればよいのでしょうか。よろしくお願いします。

<SCRIPT language="JavaScript">
<!--
date = getCookie("Date");
if (date == "") {
    date = "初めまして!!";
}
document.write("最終訪問日:" + date + "<BR>");

dd = new Date();
ye = dd.getYear();      if (ye < 1900) ye += 1900;
mo = dd.getMonth() + 1; if (mo < 10) mo = "0" + mo;
da = dd.getDate();      if (da < 10) da = "0" + da;
date = ye + "/" + mo + "/" + da;

setCookie("Date", date);

function getCookie(key,  tmp1, tmp2, xx1, xx2, xx3) {
    tmp1 = " " + document.cookie + ";";
    xx1 = xx2 = 0;
    len = tmp1.length;
    while (xx1 < len) {
        xx2 = tmp1.indexOf(";", xx1);
        tmp2 = tmp1.substring(xx1 + 1, xx2);
        xx3 = tmp2.indexOf("=");
        if (tmp2.substring(0, xx3) == key) {
            return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
        }
        xx1 = xx2 + 1;
    }
    return("");
}

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

ところで、サンプルで、コメントアウトされているところがありますがあれは何か意味があるのでしょうか。消してしまいましたが……。

Aurai [E-Mail] 1999/04/01(木) 01:39:27
>ところで、サンプルで、コメントアウトされているところがありますが
locationの設定でしたよね、特に必要ないと思います。

以下、長いですがクッキーサンプル
NC4.5で確認。IE5では動作が怪しかったです。

<SCRIPT language="JavaScript">
<!--

week = new Array(7);
week[0] = "Sun";
week[1] = "Mon";
week[2] = "Tue";
week[3] = "Wed";
week[4] = "Thu";
week[5] = "Fri";
week[6] = "Sat";

month = new Array(12);
month[0] = "Jan";
month[1] = "Feb";
month[2] = "Mar";
month[3] = "Apr";
month[4] = "May";
month[5] = "Jun";
month[6] = "Jul";
month[7] = "Aug";
month[8] = "Sep";
month[9] = "Oct";
month[10] = "Nov";
month[11] = "Dec";

date = "";

tmp1 = document.cookie + ";";
i = tmp1.indexOf("Date=");
if (i > -1) {
date = unescape(tmp1.substring(i + 5,tmp1.indexOf(";",i)));
}

if (date == "") {
document.write("初めまして!!<BR>");
} else {
document.write("最終訪問日:" + date + "<BR>");
}

dd = new Date();
ye = dd.getYear(); if (ye < 1900) ye += 1900;
mo = dd.getMonth() + 1; if (mo < 10) mo = "0" + mo;
da = dd.getDate(); if (da < 10) da = "0" + da;
date = ye + "/" + mo + "/" + da;

dd.setTime(dd.getTime() + 3*30*24*60*60*1000);
ye = dd.getYear(); if (ye < 1900) ye += 1900;
da = dd.getDate(); if (da < 10) da = "0" + da;
ho = dd.getHours(); if (ho < 10) ho = "0" + ho;
mi = dd.getMinutes(); if (mi < 10) mi = "0" + mi;
se = dd.getSeconds(); if (se < 10) se = "0" + se;
expiresdate = week[dd.getDay()] + ", " + da + "-" + month[dd.getMonth()] + "-" + ye +
              " " + ho + ":" + mi + ":" + se + "; ";


document.cookie = "Date=" + escape(date) + "; " +
                "expires=" + expiresdate;

document.write(expiresdate);

//-->
</SCRIPT>

Aurai [E-Mail] 1999/04/01(木) 01:42:51
……あ、最後の document.write はチェック用のコマンドですので消して下さい

YUFU [E-Mail] [HomePage] 1999/04/01(木) 12:20:01
[[解決]]
ありがとうございました。

IE4で確認しました。NN動作不調のため確認できませんでした。
(OSクリーンインストールしようかなぁ。)

>locationの設定でしたよね、特に必要ないと思います。

そうですか。安心しました。

コードは何となく分かった気がします(^^;)。何せ、C言語(VC++含む)歴 2週間程度でして。else ifとかは分かるんですけどね。
そのうち(真面目に)勉強しようかなぁ<JavaScript。

[上に] [前に] [次に]