/* 쿠키 라이브러리 -- "Night of the Living Cookie" 버전(96년 7월 25일)
2缔友计算机信息技术有限公主,涂聚文 geovindu@163.com 互交流
3 작성자: Bill Dortch , 하이다호 디자인
4 다음 기능이 공개 도메인으로 출시되었습니다.
5http://www.dusystem.com/
6 이 버전은
7개의 쿠키를 삭제하는 데 더욱 적극적인 접근 방식을 취합니다. 이전 버전에서는 만료 날짜를 현재 시간보다
8밀리초 전으로 설정했습니다. 그러나 이 방법은
9 Netscape 2.02에서는 작동하지 않았습니다(이전 버전과
이후 버전에서는 작동하지만).
죽지 않는 "좀비" 쿠키가 탄생했습니다. 이제 DeleteCookie는 만료 날짜를
사용 가능한 가장 빠른 날짜(1970년의 1초)로 설정하고
쿠키 값을 null로 설정합니다.
또한 이 버전에서는
DeleteCookie 기능에 선택적 경로 및 도메인 매개변수가 추가되었습니다. 쿠키 생성(설정)**시
경로 및/또는 도메인을 지정하신 경우, 쿠키 삭제 시에도 동일한
경로/도메인을 지정하셔야 합니다. 그렇지 않으면 삭제가 되지 않습니다.
이제 2.x Mac 날짜 버그를 수정하려면
FixCookieDate 함수를 명시적으로 호출해야 합니다. 이 함수는 Date 객체가 생성된 후
(만료 날짜로) SetCookie에 전달되기 전에
*한 번* 호출되어야 합니다.
Mac 날짜 버그는
SetCookie에 전달된 날짜뿐만 아니라 모든 날짜에 영향을 미치므로 새 Date 객체를 생성할 때마다
FixCookieDate를 호출하는 습관을 들이는 것이 좋습니다.
var theDate = new Date();
FixCookieDate(theDate);
FixCookieDate 호출은
Mac 이외의 플랫폼에는 영향을 미치지 않으므로
호출하기 전에 사용자 플랫폼을 확인할 필요가 없습니다.
이 버전에는 몇 가지 사소한 코딩 개선 사항도 포함되어 있습니다.
**이름은 같지만
다른 (중첩된) 경로를 사용하여 여러 쿠키를 설정할 수 있습니다. 예:
SetCookie("color","red",null,"/outer");
SetCookie("색상","파란색",null,"/외부/내부");
그러나 GetCookie는 이들을 구별할 수 없으며
주어진 이름과 일치하는 첫 번째 쿠키를 반환합니다. 따라서
경로가 다른 쿠키에 동일한 이름을 사용하지 *않는* 것이
권장됩니다. (쿠키와 관련된 경로는 *항상*
있으며, 명시적으로 지정하지 않으면
설정 문서의 경로가 사용됩니다.)
개정 내역 :
"Toss Your Cookies" 버전(96년 3월 22일)
- Mac 날짜 버그를 수정하기 위해 FixCookieDate() 함수 추가
"Second Helping" 버전(1월 21일) -96)
- SetCookie에 경로, 도메인 및 보안 매개변수 추가
- 홈롤링 인코딩/디코드 기능을 Netscape의
새로운 (당시) 이스케이프 및 이스케이프 해제 기능
"무료 쿠키로 대체 " 버전(95년 12월)
쿠키 매개변수의 중요성 및
쿠키 전반에 대한 자세한 내용은 공식 쿠키
사양을 참조하세요.
http:www.netscape.com/newsref/std/cookie_spec.html
**************************** **************************************** */
/* *//* 쿠키의 디코딩된 값을 반환하는 "내부" 함수*/
function getCookieVal(오프셋) {
var endstr = document.cookie.indexOf(";", 오프셋);
if (endstr == -1) {
endstr = document.cookie.length;
}
return unescape(document.cookie.substring(offset, endstr));
}
/**//* 2.x Mac 날짜 버그를 수정하는 함수입니다.
날짜 객체를 SetCookie에 전달하기 전에 수정하려면 이 함수를 호출하세요.
중요: 이 함수는 주어진 날짜 객체에 대해
*한 번만* 호출해야 합니다! 이 문서 끝에 있는 예를 참조하세요.*/
function FixCookieDate(date) {
var base = new Date(0);
var Skew = base.getTime(); // (Unix) 시간의 새벽 - 0이어야 합니다
if (skew > 0) { // Mac 제외 - 시간보다 앞선
date.setTime(date.getTime() - Skew);
}
}
/**//* "name"으로 지정된 쿠키의 값을 반환하는 함수입니다.
name - 쿠키 이름이 포함된 문자열 개체입니다.
returns - 쿠키 값이 포함된 문자열 개체이거나
쿠키가 존재하지 않는 경우 null입니다.*/
function GetCookie(이름) {
var temp = 이름 "=";
var tempLen = temp.length;
var cookieLen = document.cookie.length;
var i = 0;
while (i < cookieLen) {
var j = i tempLen;
if (document.cookie.substring(i, j) == temp) {
return getCookieVal(j);
}
i = document.cookie.indexOf(" ", i) 1;
if (i == 0) 중단;
}
null을 반환합니다.
}
/**//* 쿠키를 생성하거나 업데이트하는 함수입니다.
name - 쿠키 이름이 포함된 문자열 개체입니다.
value - 쿠키 값을 포함하는 문자열 개체입니다. 유효한 문자열 문자를
포함할 수 있습니다.
[expiresDate] - 쿠키의 만료 데이터가 포함된 날짜 개체입니다.
생략되거나 null인 경우 현재 세션이 끝나면 쿠키가 만료됩니다.
[path] - 쿠키가 유효한 경로를 나타내는 문자열 개체입니다.
생략되거나 null인 경우 호출 문서의 경로를 사용합니다.
[도메인] - 쿠키가 유효한 도메인을
나타내는 문자열 개체입니다. 생략되거나 null인 경우 호출 문서의 도메인을 사용합니다.
[secure] - 쿠키 전송에 보안 채널(HTTPS)이
필요한지 여부를 나타내는 부울(true/false) 값입니다.
처음 두 매개변수는 필수입니다. 다른 항목은 제공된 경우
위에 나열된 순서대로 전달되어야 합니다. 사용하지 않는 선택 필드를 생략하려면
null을 자리 표시자로 사용하세요. 예를 들어 이름,
값 및 경로를 사용하여 SetCookie를 호출하려면 다음과 같이 코딩합니다.
SetCookie ("myCookieName", "myCookieValue", null, "/");
뒤에 생략된 매개변수에는 자리 표시자가 필요하지 않습니다.
현재 세션 이후에 만료되는 "/myPath" 경로에 대한 보안 쿠키를 설정하려면
다음과 같이 코딩할 수 있습니다.
SetCookie (myCookieVar, cookieValueVar, null, "/myPath" , 널, 참);*/
function SetCookie (name,value,expiresDate,path,domain,secure) {
document.cookie = name "=" escape (value)
((expiresDate) ? "; 만료="expiresDate.toGMTString() : "")
((경로) ? "; path=" 경로 : "")
((도메인) ? "; domain="도메인 : "")
((보안) ? "; 보안" : "");
}
/**//* 쿠키를 삭제하는 함수입니다. (만료 날짜를 에포크 시작으로 설정)
name - 쿠키 이름이 포함된 문자열 개체
path - 삭제할 쿠키의 경로가 포함된 문자열 개체입니다. 이는
쿠키를 생성하는 데 사용된 경로와 동일해야 하며,
쿠키를 생성할 때 경로가 지정되지 않은 경우 null/생략됩니다.
domain - 삭제할 쿠키의 도메인이 포함된 문자열 개체입니다. 이는
쿠키를 생성하는 데 사용된 도메인과 동일해야 하며
쿠키를 생성할 때 도메인이 지정되지 않은 경우 null/생략됩니다.*/
function DeleteCookie (이름, 경로, 도메인) {
if (GetCookie(이름)) {
document.cookie = name "="
((path ) ? "; path=" 경로 : "")
((도메인) ? "; domain=" 도메인 : "")
"; 만료=70년 1월 1일 목요일 00:00:01 GMT ";
}
}
// 호출 예:
// var expdate = new Date ();
// FixCookieDate(expdate); // Mac 날짜 버그 수정 - 주어진 Date 객체에 대해 한 번만 호출하세요!
// expdate.setTime (expdate.getTime() (24 * 60 * 60 * 1000)); // 지금으로부터 24시간 후
// SetCookie ("ccpath", "http://www.dupcit.com/articles/", expdate);
// SetCookie("ccname", "WebWoman", expdate);
// SetCookie("tempvar", "임시 쿠키입니다.");
// SetCookie("유비쿼터스", "이 쿠키는 이 도메인의 어느 곳에서나 작동합니다.",null,"/");
// SetCookie("paranoid", "이 쿠키에는 보안 통신이 필요합니다.",expdate,"/",null,true);
// SetCookie ("goner", "이 쿠키는 죽어야 합니다!");
// document.write (document.cookie "
");
//DeleteCookie("goner");
// document.write (document.cookie "
");
// document.write ("ccpath = " GetCookie("ccpath") "
");
// document.write ("ccname = " GetCookie("ccname") "
");
// document.write ("tempvar = " GetCookie("tempvar") "
");