그누보드 쿠키 시스템 이해 - PHP 와 Javascript 간 쿠키 공유에 대해서 > 개발

본문 바로가기
사이트 내 전체검색

개발

그누보드 쿠키 시스템 이해 - PHP 와 Javascript 간 쿠키 공유에 대해서

페이지 정보

profile_image
작성자 관리자 (112.♡.173.204)
댓글 0건 조회 2,528회 작성일 21-05-14 22:43

본문

## 출처
https://sir.kr/qa/57777

편리 님의 답변

common.js 파일과 common.lib.php 파일의 get_cookie 함수의 코드를 비교해보시면 아시겠지만
common.js 파일에서는 쿠키의 이름을 입력받은 그대로 저장하는 반면
common.lib.php 파일의 get_cookie 함수는 md5를 이용해 이름을 암호화합니다.
 
따라서, 자바스크립트에서 get_cookie를 이용해 쿠키를 생성했다면 php 의 get_cookie 함수 대신 $_COOKIE 를 사용해야 합니다. get_cookie("topsubmenu​") 를 $_COOKIE['topsubmenu​'] 로 수정해야합니다.


## 그누보드의 관련 소스들

- common.lib.php
```
// 쿠키변수 생성
function set_cookie($cookie_name, $value, $expire)
{
    global $g5;

    setcookie(md5($cookie_name), base64_encode($value), G5_SERVER_TIME + $expire, '/', G5_COOKIE_DOMAIN);
}


// 쿠키변수값 얻음
function get_cookie($cookie_name)
{
    $cookie = md5($cookie_name);
    if (array_key_exists($cookie, $_COOKIE))
        return base64_decode($_COOKIE[$cookie]);
    else
        return "";
}
```

- common.js
```
// 쿠키 입력
function set_cookie(name, value, expirehours, domain)
{
    var today = new Date();
    today.setTime(today.getTime() + (60*60*1000*expirehours));
    document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + today.toGMTString() + ";";
    if (domain) {
        document.cookie += "domain=" + domain + ";";
    }
}

// 쿠키 얻음
function get_cookie(name)
{
var match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
if (match) return unescape(match[2]);
return "";
}
```

## 결론

PHP 에서 쿠키를 저장 할때, 쿠키명은 md5 로 쿠키값은 base64_encode 로 변환해서 저장한다.
그래서 javascript 에서 사용하려면 같은 조작을 해야만 불러올 수 있다.
물론 불가능 한 것은 아니지만, 불편한 것은 사실이다.
https://parkwonhui.github.io/front/2019/04/11/front-js-md5-base64.html


## 해결

자바스크립트에서만 사용하는 쿠키는 그냥 구워서 써도 상관은 없다.
하지만, PHP 에서도 사용해야 하거나 PHP 의 쿠키를 가져와서 사용하려면, Ajax 를 사용하는 방법이 있다.

추천0

댓글목록

등록된 댓글이 없습니다.

Total 386건 3 페이지
  • RSS
개발 목록
번호 제목 조회 추천 날짜
3463075006-15
3451700005-04
3441454003-11
3431910003-04
3421846002-21
3411992002-20
3402191002-18
3391719002-15
3381552002-13
3372015002-08
3361563002-08
3351587002-03
3341513001-31
3332581001-29
3321537001-28
3311417001-13
3301660012-23
3292305012-20
3284344005-19
3273572005-15

검색


사이트 정보

Copyright © Baragi.Net. All rights reserved.