JavaScript Tips


Cookieを使う


クッキーを書き出すときの書式は
name=値;expires=期限(GMT);path=URLパス;domain=サイトドメイン;secure
このうち必須なのはnameだけですが、expires(期限)を指定しないとWebブラウザを閉じられた時点でクッキーの有効期限が切れてしまいます。
クッキーを削除するにはexpiresに現在より過去の時間を設定すれば削除されます。

サンプルの概要

  _getCookie()
    クッキーの値をキーにより取得
  _setCookie()
    有効期限を2030年固定で設定
  _setCookie_Save7Days()
    有効期限を7日間に設定
  _delCookie()
    クッキーをキーにより削除


※サンプルではクッキーに値をセットする際escapeを使用してデコードし、取り出す時にunescapeを使用してエンコードしています。
<SCRIPT language="JavaScript">
<!--
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);
      _ret =(unescape(_tmp.substring(_start,_end)));
   }else{
      _ret = "";
   }
   return _ret;
}

function _setCookie(key,value){
   _tmp=key+"="+escape(value)+";";
   _tmp+="expires=Fri, 31-Dec-2030 23:59:59";
   document.cookie=_tmp;
}

function _setCookie_Save7Days(key,value){
  _tmp=key+"="+escape(value)+";";
  expiresDate=new Date();
  expiresDate.setTime(expiresDate.getTime()+60*60*24*7*1000);
  _tmp+="expires="+expiresDate.toGMTString();
  document.cookie=_tmp;
}

function _delCookie(key){
  expiresDate=new Date();
  expiresDate.setYear(expiresDate.getYear()-1);
  _tmp=key+"=;"+"expires="+expiresDate.toGMTString();
  document.cookie=_tmp;
}

//-->
</SCRIPT>
<BODY>
<SCRIPT language="JavaScript">
<!--
_num=_getCookie("jvstips_key01");
if(_num==""){
  _num=1;
  _setCookie("jvstips_key01",_num);
}else{
  _num++;
  _setCookie("jvstips_key01",_num);
}
document.write(_num+"回目の訪問です<BR>");
//-->
</SCRIPT>
<FORM>
<INPUT type="submit" onclick="_delCookie('jvstips_key01')" value="クッキーの削除">
</FORM>

</BODY>