クッキーサンプルスクリプト

クッキーサンプルスクリプト ver.2

[ソースコード][エスケープについて][賞味期限について]

このクッキーの賞味期限は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 Geocities-Japan
Get your own Free Home Page