300x250
## 출처
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 를 사용하는 방법이 있다.
300x250
'개발' 카테고리의 다른 글
Android WebView 에서 가로 세로 Rotate 전환시에 웹뷰가 새로고침 되는 현상 (0) | 2021.05.21 |
---|---|
CentOS 8 에 memcached 설치하기 (0) | 2021.05.16 |
다음 카카오 지도/로컬 api 호출 시 올바른 앱 키 사용 여부 확인 및 수정 요청 (0) | 2021.03.23 |
iframe 으로 YouTube 재생시, 더이상 rel=0 으로 추천 동영상이 안보이게 할 수 없다. (0) | 2019.01.06 |
법정동코드목록 조회 및 다운로드 - 행정표준코드관리시스템 (0) | 2017.03.09 |