묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
[쿠키] 분명히 3개의 쿠키가 만들어진 거 같은데...
2004.06.22 14:53
http://hyzen.co.kr 에 가서 주소창에 javascript:alert(document.cookie); 하면 다음과 같은 창이 뜹니다.
이 박스를 보면 분명히 PHPSESSID, hyzen, nospam 이렇게 3개의 쿠키가 만들어졌다 생각됩니다.
그런데 팝업창에 대한 쿠키정보를 가져오기 위해 아래 자바스크립트를 실행하면 PHPSESSID 쿠키만 가져온다는 것입니다.
function getCookie(name)
{
var nameOfCookie = name + "=";
var x = 0;
while (x <= document.cookie.length)
{
var y = x + nameOfCookie.length;
if(document.cookie.substring(x, y) == nameOfCookie)
{
if((endOfCookie = document.cookie.indexOf(";", y)) == -1)
endOfCookie = document.cookie.length;
return unescape(document.cookie.substring(y, endOfCookie));
}
x = document.cookie.indexOf(" ", x) + 1;
if(x == 0)
break;
}
return "";
}
function openMsgBox()
{
var eventCookie = getCookie("hyzen");
if(eventCookie != "done")
window.open("popup2.htm", "notice", "width=400, height=520, top=25, left=25");
}
openMsgBox();
getCookie 함수 라인 군데군데 alert();를 넣어 주욱 확인해 봤는데 PHPSESSID=072dd...83d51(총42자)만 검사하고는 name값으로 넘겨 준 'hyzen'이 없다고 판단, 그냥 return ""; ... 결국 팝업창이 계속 뜹니다...ㅠ.ㅠ
참고로 팝업창 자바스크립트소스는 아래와 같습니다.
function setCookie(name, value, expiredays)
{
var todayDate = new Date();
todayDate.setDate( todayDate.getDate() + expiredays );
document.cookie = name + "=" + escape( value ) + ";expires=" + todayDate.toGMTString() + ";path=/;";
}
function closeWin()
{
if(document.forms[0].notice.checked)
setCookie("hyzen", "done", 1);
self.close();
}
getCookie 안에서 alert(document.cookie.length); 를 걸어보면 42 가 나옵니다. 이 길이는 PHPSESSID쿠키의 길이거든요... 제 생각에는 42 보다 큰 수가 나와야 할 것 같은데...
왜 다른 2개의 쿠키, hyzen 및 nospam 에 대한 건 안 가져올까요?
스팸테스트를 해 보면 걸리는 걸로 봐서 분명 nospam쿠키가 읽히는 거 같은데...
제가 뭘 잘못하고 있는 건지 모르겠습니다. 여러 선배님들의 고언 꼭 좀 부탁드리겠습니다. 감사합니다.
이 박스를 보면 분명히 PHPSESSID, hyzen, nospam 이렇게 3개의 쿠키가 만들어졌다 생각됩니다.
그런데 팝업창에 대한 쿠키정보를 가져오기 위해 아래 자바스크립트를 실행하면 PHPSESSID 쿠키만 가져온다는 것입니다.
function getCookie(name)
{
var nameOfCookie = name + "=";
var x = 0;
while (x <= document.cookie.length)
{
var y = x + nameOfCookie.length;
if(document.cookie.substring(x, y) == nameOfCookie)
{
if((endOfCookie = document.cookie.indexOf(";", y)) == -1)
endOfCookie = document.cookie.length;
return unescape(document.cookie.substring(y, endOfCookie));
}
x = document.cookie.indexOf(" ", x) + 1;
if(x == 0)
break;
}
return "";
}
function openMsgBox()
{
var eventCookie = getCookie("hyzen");
if(eventCookie != "done")
window.open("popup2.htm", "notice", "width=400, height=520, top=25, left=25");
}
openMsgBox();
getCookie 함수 라인 군데군데 alert();를 넣어 주욱 확인해 봤는데 PHPSESSID=072dd...83d51(총42자)만 검사하고는 name값으로 넘겨 준 'hyzen'이 없다고 판단, 그냥 return ""; ... 결국 팝업창이 계속 뜹니다...ㅠ.ㅠ
참고로 팝업창 자바스크립트소스는 아래와 같습니다.
function setCookie(name, value, expiredays)
{
var todayDate = new Date();
todayDate.setDate( todayDate.getDate() + expiredays );
document.cookie = name + "=" + escape( value ) + ";expires=" + todayDate.toGMTString() + ";path=/;";
}
function closeWin()
{
if(document.forms[0].notice.checked)
setCookie("hyzen", "done", 1);
self.close();
}
getCookie 안에서 alert(document.cookie.length); 를 걸어보면 42 가 나옵니다. 이 길이는 PHPSESSID쿠키의 길이거든요... 제 생각에는 42 보다 큰 수가 나와야 할 것 같은데...
왜 다른 2개의 쿠키, hyzen 및 nospam 에 대한 건 안 가져올까요?
스팸테스트를 해 보면 걸리는 걸로 봐서 분명 nospam쿠키가 읽히는 거 같은데...
제가 뭘 잘못하고 있는 건지 모르겠습니다. 여러 선배님들의 고언 꼭 좀 부탁드리겠습니다. 감사합니다.