[JS] 자바스크립트 쿠키 클래스

자바스크립트 쿠키 클래스 

서버측 언어에서 쿠키 핸들링하는 함수들을 제공하지만 개발하다보면 클라이언트에서 자바스크립트로 쿠키를 조작해야하는 경우들이 있다.


자바스크립트로 쿠키를 핸들링하는 함수들은 많이 있지만 쿠키생성할때의 옵션들도 다시 확인해보면서 클래스로 묶고 사용하기 편하게 다시 정리해보았다.


 

■ 자바스크립트 쿠키 클래스


  1. var Cookie =

  2. {

  3.     cookie_arr : null,

  4.  

  5.     set : function (name,value,options)

  6.     {

  7.     options = options || {};

  8.  

  9.     this.cookie_arr = [escape(name) + '=' + escape(value)];

  10.  

  11.     //-- expires

  12.     if (options.expires)

  13.     {

  14.     if( typeof options.expires === 'object' && options.expires instanceof Date )

  15.     {

  16.     var date = options.expires;

  17.     var expires = "expires=" + date.toUTCString();

  18.     this.cookie_arr.push (expires);

  19.     }

  20.     }

  21.     else if (options.expires_day)

  22.     {

  23.     this.set_expires_date (options.expires_day , 24*60*60);

  24.     }

  25.     else if (options.expires_hour)

  26.     {

  27.     this.set_expires_date (options.expires_hour , 60*60);

  28.     }

  29.  

  30.     //-- domain

  31.     if (options.domain)

  32.     {

  33.     var domain = "domain=" + options.domain;

  34.     this.cookie_arr.push (domain);

  35.     }

  36.  

  37.     //-- path

  38.     if (options.path)

  39.     {

  40.     var path = 'path=' + options.path;

  41.     this.cookie_arr.push (path);

  42.     }

  43.  

  44.     //-- secure

  45.     if( options.secure === true )

  46.     {

  47.     var secure = 'secure';

  48.     this.cookie_arr.push (secure);

  49.     }

  50.  

  51.     document.cookie = this.cookie_arr.join('; ');

  52.     //console.log (this.cookie_arr.join('; '));

  53.     },

  54.  

  55.     get : function (name)

  56.     {

  57.     var nameEQ = escape(name) + "=";

  58.     var ca = document.cookie.split(';');

  59.  

  60.     for(var i=0;i < ca.length;i++)

  61.     {

  62.     var c = ca[i];

  63.     while (c.charAt(0)==' ') c = c.substring(1,c.length);

  64.     if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));

  65.     }

  66.     return null;

  67.     },

  68.  

  69.     del : function (name , options)

  70.     {

  71.     options = options || {};

  72.     options.expires_day = -1;

  73.     this.set ( name , '' , options );

  74.     },

  75.  

  76.     set_expires_date : function (expires , time)

  77.     {

  78.     var date = new Date();

  79.     date.setTime(date.getTime()+(expires*time*1000));

  80.     var expires = "expires=" + date.toUTCString();

  81.     this.cookie_arr.push (expires);

  82.     }

  83. };



 

■ 옵션들에 대한 설명


  1.    옵션          내용       형식                                                               지정 안했을경우 기본값   설명    

  2. -------------- --------------   ------------------------------------------------------------------ ----------------------- ------------------------------------------------------------------------------------------------

  3. expires       쿠키 만료일   new Date(year, month, day, hours, minutes, seconds, milliseconds)  브라우져 종료시점까지    쿠키 만료일을 정확하게 지정. new Date(2013,8,10,0,0,0) 같이 초까지만 지정하면 된다.

  4. expires_day   쿠키 생존   숫자                                                               브라우져 종료시점까지    쿠키 만료일을 현재시간으로부터 몇일후로 지정

  5. expires_hour  쿠키 생존 시간 숫자                                                               브라우져 종료시점까지    쿠키 만료일을 현재시간으로부터 몇시간후로 지정

  6. domain        도메인       www.example.com 또는 sub.example.com 또는 example.com              현재의 도메인            쿠키가 적용될 도메인으로 example.com 으로 지정시 앞에 모든 서브도메인에서 모두 사용 가능

  7. path          경로         / 또는 /dir                                                        /                      쿠키가 적용될 디렉토리로 /dir 입력시 /dir 시작하는(/direc , /dirpath 등) 모든 디렉토리에 적용

  8. secure        ssl         true 또는 false                                                    false                  true 설정하면 보안을 위해 ssl https 프로토콜일때만 쿠키 생성


  - 모든 옵션은 말 그대로 필요한것이 있을경우 지정하면 되고, 지정 안하면 기본값으로 세팅된다.


  - expires , expires_day , expires_hour 는 경우에 맞게 적당한것으로 한가지를 골라 사용하면 된다. 3개중 2개 이상을 중복해서 사용하면 위 적힌 순서대로 먼저 적은것이 적용되게 된다. 즉 expires 와 expires_day 를 동시에 옵션을 주면 expires 가 적용되고 expires_day는 무시된다.


 

■ 사용 예제


  ◎ 쿠키 만들기


1. 기본옵션으로 쿠키 만들기

   - 브라우저가 종료되면 없어지고, 현재 도메인에서, 모든 디렉토리 (/) 에서 사용가능한 쿠키가 만들어진다.


  1. Cookie.set ('cookie_name1' , 'cookie_value1');


 

2. 모든 옵션


  1. Cookie.set ('cookie_name2' , 'cookie_value2' , {

  2. expires : new Date(2013,8,10,0,0,0),

  3. domain: 'example.com',

  4. path : '/dir',

  5. secure : true

  6. });


 

3. 만료일 : 일(day)단위

   - 현재시간으로부터 1일동안 사용가능한 쿠키 만들기

   - 위 2번에서 expires 옵션 대신 사용하면 된다.


  1. Cookie.set ('cookie_name3' , 'cookie_value3' , {

  2. expires_day : 1

  3. });


 

4. 만료일 : 시간(hour)단위

   - 현재시간으로부터 12시간동안 사용가능한 쿠키 만들기

   - 위 2번에서 expires 옵션 대신 사용하면 된다.


  1. Cookie.set ('cookie_name4' , 'cookie_value4' , {

  2. expires_hour : 12

  3. });


 

5. 특수문자(; 와 =) 처리

   - 쿠키는 document.cookie 에 = 과 ; 을 이용하여 값들을 문자열로 연결하여 저장하고, 값을 가져올때에도 = 과 ; 을 기준으로 잘라서 가져오기때문에 2개 문자를 포함한 특수문자들을 처리해준다.


  1. Cookie.set ('cookie_name=;=' , ';=cookie_value3=a=;b');


 

  ◎ 쿠키값 가져오기


6. 쿠키값 가져오기


  1. Cookie.get ('cookie_name1');


 

7. 5번에서 특수문자가 포함된 이름과 값으로 생성된 쿠키값 확인


  1. Cookie.get ('cookie_name=;=');


 

  ◎ 쿠키 삭제


8. 1번에서 기본옵션값으로 생성한 쿠키값 삭제


  1. Cookie.del ('cookie_name1');


 

9. 2번에서 옵션값을 정해서 생성한 쿠키값 삭제

   - 만료일을 제외한 모든 옵션을 생성할때와 똑같이 지정해서 삭제해야 함


  1. Cookie.del ('cookie_name2' , {

  2. domain: 'example.com',

  3. path : '/dir',

  4. secure : true

  5. });


 

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기
captcha
자동등록방지 숫자입력

웹개발

번호 제목 글쓴이 날짜 조회수
22 [리눅스] Apache Document Root 권한설정 최고관리자 09-04 1,618
21 [리눅스] CentOS Version 확인하기 최고관리자 09-04 1,453
20 [리눅스] MySQL 최초 접속 및 설정 최고관리자 09-03 1,745
19 [리눅스] MySQL 5.7 보안설정 최고관리자 09-03 1,543
18 [리눅스] RDate로 시간 동기화 하기. 최고관리자 09-03 1,468
17 [리눅스] 기본설치 (Apache , PHP , MySql) 최고관리자 09-03 2,019
16 [공부] 프로그래밍 공부 사이트 최고관리자 09-01 1,399
15 [기능] Mobile 메뉴 최고관리자 09-01 1,367
14 [기능] Mega Menu 최고관리자 09-01 1,409
13 [기능] 상단에서 메뉴높이가 높고 아래로 스크롤하면 메뉴높이가 줄어듦 최고관리자 09-01 1,416
12 [기능] 상단에 메뉴가 보이다가 아래로 스크롤하면 메뉴가 사라지고 상단으로 가면 메뉴가 보임. 최고관리자 09-01 1,336
11 [기능] 메뉴가 안 보이다가 아래로 스크롤하면 메뉴가 생김 최고관리자 09-01 1,437
10 [기능] Icon으로 구성된 수직/수평 메뉴 최고관리자 09-01 1,281
9 [JS] 자바스크립트 {...} [...] 문법 (비구조화 할당/구조분해 할당) 최고관리자 09-01 1,292
8 [기능] 상단의 높이가 큰 메뉴상태에서 아래로 스크롤하면 상단에 높이가 낮은 메뉴가 고정됨 최고관리자 09-01 1,296
7 [Font] Naversoftware 폰트 리스트 최고관리자 09-01 1,360
6 [Web Font] 직접입력해서 폰트를 확인할 수 있는 사이트 최고관리자 09-01 1,349
5 [CSS - font] unicode-range 최고관리자 08-31 1,577
4 [UI 참고] Oven - 회원가입 최고관리자 08-31 1,311
3 타자기체 - 가로 세로 비율이 고정되어 있는 글꼴로 표현 최고관리자 08-08 1,400