このクッキーの賞味期限は1日です。
<html> <head> <script language="JavaScript"> <!--「クッキーサンプルスクリプト」午後 01:01 98/03/17:written by CLONE;LastModified 午後 03:08 98/05/06 //searchStringより前にある文字列を取得 function getFront(mainStr,searchStr){ foundOffset=mainStr.indexOf(searchStr) if (foundOffset==-1){ return null } return mainStr.substring(0,foundOffset) } //searchStringより後にある文字列を取得 function getEnd(mainStr,searchStr){ foundOffset=mainStr.indexOf(searchStr) if(foundOffset==-1){ return null } return mainStr.substring(foundOffset+searchStr.length,mainStr.length) } //クッキーを取り出す関数(該当するクッキーがないときはnullを返します。) function LoadCookie(name){ var str=getEnd(document.cookie,name+"=") if(str!=null){ var tmp=getFront(str,";") if(tmp!=null){ str=unescape(tmp) }else{ str=unescape(str) } }else{ alert("クッキーに保存されてないのかも\nもしかしてローカルディレクトリでテストしてる?") } return str } //クッキーを保存する関数 function SaveCookie(name,value){ var expires = new Date() //このクッキーの賞味期限は1日です。 expires.setTime(expires.getTime() + (1*24*60*60*1000)) document.cookie=name+"="+escape(value)+"; expires="+expires.toGMTString() alert("クッキーに保存したかも。") } // --> </script> <title>クッキーサンプルスクリプト</title> </head> <body color="silver"> <center> <h2>クッキーサンプルスクリプト</h2> このクッキーの賞味期限は1日です。<br> <p> <form name="Edit"> <input type="button" value="保存" onClick="SaveCookie('TEXT',this.form.comments.value)" > <input type="button" value="読み込み" onClick="this.form.comments.value=(LoadCookie('TEXT')!=null)? LoadCookie('TEXT'):'クッキーサンプルスクリプト(最低限の機能のみ)'" > <input type="button" value="クッキーを直接見る" onClick="alert(document.cookie)" ><br> <textarea name="comments" rows="12" cols="100" wrap="off" ></textarea> </form> </center> </body> </html>
データをエスケープしておくと、データ名とデータを安全に分離できます。
セパレータに使ってる制御文字だけエスケープすればよいのですが、
めんどうなのでJSのescape関数を使っています。
たとえば、データ名 = データ という形式で
Data1 に Data2=error
Data2 に xyz
を単純に保存したとすると、クッキーはこうなります。
Data1=Data2=error;Data2=xyz
これだとData2のxyzが読み出せなくなります。
データをエスケープして保存するとこうなります。
Data1=Data2%3Derror;Data2=xyz
これなら正しいData2の値を読み出せます。
クッキーの有効期限を設定するには
SaveCookie関数の以下の部分の値を変更します
expires.setTime(expires.getTime() + (1*24*60*60*1000))時間の単位はミリ秒(1000分の1秒)です。
例:有効期限を30日間に設定する場合
expires.setTime(expires.getTime() + (30*24*60*60*1000))
このスクリプトはサンプルです。
もっとコンパクトで使いやすいようにいじってみてください。
インデックス |
(◎←) ((( ▽ ))) - - |
This page hosted by
Get your own Free Home Page