javascript

[javascript]javascript로 쿠키 생성

개발하자구 2023. 4. 13. 10:02

페이지 넘길 때 값을 넘겨주는 방식으로 POST/GET방식, 쿼리스트링방식, 쿠키 등 이 세가지 방식이 자주 쓰인다.

 

 

1. 쿠키생성시 날짜와 시간을 설정할 때 자주 사용하는 함수

 

new Date(); 현재 날짜,시간을 반환한다.

 

ooo.getMonth() : 현재 ooo의 월을 정수로 반환 한다 (0~11로 반환됨 즉, 1월은 0으로 반환됨)

ooo.getDate() : 현재 ooo의 날을 숫자로 반환한다. (Month와 다르게 1~31까지 우리가 사용하는 형식 그대로 반환됨)

 

ooo.getDate(7) : 현재 ooo의 날을 교체한다 7일로 교체한다.

 

escape(“문자열”)함수 : 괄호안의 문자를 16진수로 바꿔준다.

 

 

<script>
    function set_cookie(name, value, expiredays){
        var todayDate = new Date();
        todayDate.setDate( todayDate.getDate() + expiredays);
        //쿠키 생성
        document.cookie = name + "=" + escape( value ) + "; path=/ ; expires=" + todayDate.toGMTString() +";"
        // console.log(document.cookie);
        // return false;
    }
</script>

 

쿠키 생성부분 : document.cookiekey:value ; 형식으로 나눠진다.

 

 

 

 

 

2.  쿠키 식별자

 

indexOf(value, position)함수 : ()안의 value 문자열에서 값이 존재하면 검색된 문자열이 '첫번째'로 나타나는 위치 index를 리턴한다. position의 기본값은 0

찾는 문자열이 없으면 -1을 리턴한다.

문자열을 찾을 때 대소문자를 구분.

 

<script>
// 쿠키 식별자 (함수가 아니라서 호출할 때만 열리는게 아니라 페이지 열릴때마다 항상 훑고 내려가는 구문)
    cookiedata = document.cookie;
    if(cookiedata.indexOf("divpop=Y") < 0){
        //쿠키 존재하지 않음
        $("#divpop").css("display","block");
    } else {
        //쿠키 존재함
        $("#divpop").css("display","none");    }
</script>

 

 

<< 쿠키 생성 규칙 >>

쿠키 생성 시 구성요소타이틀을 함부로 적으면 안된다.

f12 관리자모드 - Application에 들어가면 왼쪽 세로바에 Storage라는 구역이 나타나는데 거기안의 사이트를 아무거나 클릭

- 그래면 Name, Value, Domain, path, Expires/Max-Age 등이 보인다. 이 이름과 타이틀이 같아야 제대로 작동하게 된다.

 

 

 

 

 

 

아래는 전체코드

 

<!-- layer창(팝업) div -->
<div id="divpop">      
    <form name="div_frm">
        <input type="checkbox" name="chk_box" onclick="close_divpop('div_frm','divpop')">            
        오늘 더 이상 보이지 않기            
        <a href="javascript:;" onclick="close_divpop('div_frm','divpop')"><b>[닫기]</b></a>
    </form>        
</div>




<!-- Layer창 시작-->
<script>
    function close_divpop(frm, div){
        var k = eval('document.'+frm);
        if(k.chk_box.checked) set_cookie(div,'Y',1);        
        $("#divpop").css("display","none");
    }
</script>

<script>
    function set_cookie(name, value, expiredays){
        var todayDate = new Date();
        todayDate.setDate( todayDate.getDate() + expiredays);
        //쿠키 생성
        document.cookie = name + "=" + escape( value ) + "; path=/ ; expires=" + todayDate.toGMTString() +";"
        // console.log(document.cookie);
        // return false;
    }
    // 쿠키 식별자 (함수가 아니라서 페이지 열리면 항상 훑고 내려가는 구문)
    cookiedata = document.cookie;
    if(cookiedata.indexOf("divpop=Y") < 0){
        //쿠키 존재하지 않음
        $("#divpop").css("display","block");
    } else {
        //쿠키 존재함
        $("#divpop").css("display","none");    }
</script>