改めてcookieの書き込みについてまとめます。
JavaScript
データの書き込み
基本的にエンコードするようにします。
半角スペースやセミコロンがクッキーのデータの接続記号のためエンコードしといたほうが都合がよいからです。
data='123';
enc_data = encodeURIComponent(data);
cookie_string = 'data='+enc_data;
document.cookie = cookie_string;
↓この部分がクッキーに書き込みを行います。
document.cookie = cookie_string;
cookie_stringの内容は「data=123」となっています。
クッキー書き込みサンプル
書き込みボタン
書き込みボタンを押すとクッキーに記録します
削除ボタン
有効期限
max-ageで書く場合
limit_sec = 60*60*24; //一日
cookie_string = 'data='+enc_data+'; '
+ 'max-age='+limit_sec;
document.cookie = cookie_string;
有効期限
expireで書く場合
var expire = new Date();
expire.setTime( expire.getTime() + 1000 * 3600 * 24);
//世界標準時(GMT)でセットする
cookie_string = 'data=123; expires=' + expire.toUTCString();
document.cookie = cookie_string;
有効期限を明示しない場合、そのクッキーはブラウザを終了すると削除されます。
範囲の指定
ドメイン配下指定サブドメインを含む場合
cookie_string += 'domain=.kipure.com; '
パス配下指定
cookie_string += 'path=/hoge/; '
https通信のときのみ、クッキーが送信したい場合
cookie_string += 'secure=true; '
JSでアクセスできなくするフラグ、高セキュリティで特にセッションできれる場合に使います。
cookie_string += 'HttpOnly=true; '
読み込み
指定クッキーの値の取得
function GetCookie( cookieName )
{
var result = null;
var indexOfName = cookieName + '=';
var AllCookie = document.cookie;
var position = AllCookie.indexOf( indexOfName );
if( position != -1 )
{
var startIndex = position + indexOfName.length;
var endIndex = AllCookie.indexOf( ';', startIndex );
if( endIndex == -1 )
{
endIndex = AllCookie.length;
}
result = decodeURIComponent(
AllCookie.substring( startIndex, endIndex ) );
}
return result;
}
クッキーを連想配列として取得
function GetAllCookies()
{
var result = new Array();
var allCookies = document.cookie;
if( allCookies != '' )
{
var cookies = allCookies.split( '; ' );
for( var i = 0; i < cookies.length; i++ )
{
var cookie = cookies[ i ].split( '=' );
// クッキーの名前をキーとして 配列に追加する
result[ cookie[ 0 ] ] = decodeURIComponent( cookie[ 1 ] );
}
}
return result;
}
削除
var date = new Date();
date.setTime( date.getTime() - 1 );
cookie_string = 'data=; expires=' + date.toUTCString();
document.cookie = cookie_string;