ClassicASP ASP 쿠키 생성/사용 예제
페이지 정보
본문
쿠키를 이용하는 이유
ASP에 대해 한 번이라도 들어본 사람이라면 세션 변수가 까다롭다는 얘기도 분명히 들어본 적이 있을 것이다. 어플리케이션 상태를 유지하기 위한 세션 변수의 한 가지 대안은 쿠키를 사용하는 것이다. (사실 세션은 쿠키를 사용하여 각 사용자 세션에 유일한 식별자를 적용함으로써 각 세션을 쉽게 구별할 수 있다.) 상태를 유지하기 위한 두 가지 다른 옵션은 숨겨진 폼 필드와 질의문인데, 그것들은 최선의 경우에는 효율적인 해결 방법이 될 수 있지만 최악의 경우에는 그 유지 작업이 악몽과 같을 수 있다. 이 글에서는 HTTP 쿠키에 대한 기본 지식을 다루지 않을 것이다. 쿠키에 대하여 더 알아보려면 www.w3c.org에서 쿠키에 대한 W3C의 참고 스펙을,www.netscape.com/newsref/std/cookie_spec.html에서 Netscape Preliminary Specification을 살펴보고, 또는 쿠키와 관련된 모든 것을 살펴보기 위해서는 www.cookiecentral.com을 방문하기 바란다.
ASP와 VBScript를 이용하여 쿠키를 사용하고 상호 대화하는 작업은 JavaScript를 이용하여 같은 작업을 하는 것보다 훨씬 단순하다. ASP와 JavaScript에서 쿠키를 사용해 해 본 적이 있다면 이 말을 실감할 수 있을 것이다.
설정
<%
Response.Cookies("UserName") = "John Doe"
Response.Cookies("UserName").expires = "Jan 1, 2001"
%>
이 코드는 UserName이라는 이름의 쿠키를 설정하고, 그 값을 John Doe로 설정한다. 브라우저는 2001년 1월 1일까지 또는 코드가 브라우저로부터 삭제될 때까지 쿠키를 계속 반환할 것이다. 만료 날짜를 설정하지 않았을 경우, 쿠키는 사용자가 사이트를 떠날 때 만료된다.
위의 코드 예제에서는 만료 속성만을 사용했지만 Cookies 집합에는 추가적인 속성이 있다.
expires – 브라우저가 이 특정 쿠키를 제거할 날짜이다.
domain – 쿠키가 전송되어야 할 특정 도메인을 설정한다. 만일 속성이 설정되지 않았다면 웹 서버의 도메인이 사용된다.
path – 쿠키가 전송되기 전에 페이지가 존재해야 하는 특정 경로를 설정한다. 만일 속성이 설정되지 않았다면 쿠키를 설정한 페이지의 경로가 사용된다.
secure – 암호화된 연결을 통해서만 쿠키가 전송되어야만 한다는 것을 명시한다.
<%
Response.Cookies("UserName") = "John Doe"
Response.Cookies("UserName").expires = "Jan 1, 2001"
Response.Cookies("UserName").domain = "aspwatch.com"
Response.Cookies("UserName").path = "/examples/"
Response.Cookies("UserName").secure = TRUE
%>
수정
쿠키를 수정하는 것은 쿠키를 추가하는 것과 같다. 쿠키를 수정하면 쿠키를 생성하는 것 대신 기존의 쿠키의 값을 대체한다.
예를 들면 다음과 같다.
<%
Response.Cookies("UserName") = "John Doe"
strUser = Request.Cookies("UserName")
Response.Cookies("UserName") = "Jane Doe"
strNewUser = Request.Cookies("UserName")
Response.Write "strUser = " & strUser & "<BR>"
Response.Write "strNewUser = " & strNewUser
%>
이 코드는 같은 쿠키에 접근할 때마다 매번 브라우저에 다음과 같은 단어를 출력할 것이다.
John Doe
Jane Doe
읽기
쿠키를 추가하고 수정하였으니, 이제는 정보를 다시 사용할 수 있도록, 정보를 검색할 수 있게 만들 필요가 있다.
<%
strUserName = Request.Cookies("UserName")
response.write strUserName & "<BR>"
%>
Request 객체의 쿠키 집합은 다음과 같은 여러 가지 속성을 가지고 있다.
item – 쿠키 집합에서 특정 쿠키의 값을 표현
key – 쿠키 집합에서 특정 쿠키의 이름을 표현
count – 쿠키 집합에서 기본 원소의 수를 표현
예를 들어, 쿠키 집합에서 세 번째 기본 원소로 알려진 쿠키로부터의 값을 추출하기 위한 코드를 작성하기 위해서는 다음과 같이 코드를 작성하면 된다.
<%
strCookieName = Request.Cookies.Key(3)
strUserName = Request.Cookies.Item(strCookieName)
%>
Request.Cookies("UserName")는 Request.Cookies.Item("UserName")의 단순한 생략형이라는 것에 주목하자.
쿠키를 통하여 서너 개 이상의 정보 조각을 유지해야 할 필요가 있다면, 이와 같은 단순한 쿠키가 실제로 대단히 유용하다. 언제나 다음과 같이 작성하면 된다.
<%
Response.Cookies("특정_키_이름") = "특정 텍스트"
%>
브라우저에 새로운 쿠키를 추가하려 해도, 어떤 브라우저은 도메인 당 서너 개의 쿠키만을 지원하기도 한다. 그러므로 이것을 처리하기 위해서는 Cookie Dictionary가 추가되어야 한다.
쿠키 사전 (Dictionaries)
쿠키 사전은 다중 이름/값 아이템 또는 키를 갖는 하나의 쿠키이다. 쿠키 사전을 이용하면 하나의 쿠키로 모든 상태 데이터를 유지할 수 있다.
<%
Response.Cookies("appVendorDB")("UserName") = "jdoe"
Response.Cookies("appVendorDB")("UserEmail") = "jdoe@thecompany.com"
Response.Cookies("appVendorDB")("FullName") = "John Doe"
Response.Cookies("appVendorDB")("empID") = "19196"
Response.Cookies("appVendorDB").expires = "Jan 1, 2001"
%>
이 코드는 "appVendorDB”라 불리는 쿠키를 생성하고, 그 쿠키를 위한 4개의 다른 서브키로서 "UserName", "UserEmail", "FullName", "empID"를 생성한다. 쿠키에서 이러한 정보를 유지하고 싶어하는 한가지 이유는, 이 정보에 계속해서 접근해야만 하는 경우에 데이터베이스 연결의 부하를 줄이기 위한 것이다. 때때로 empID를 저장하고 나머지 다른 정보를 얻기 위해 데이터베이스를 질의하는 것보다 쿠키에 이 정보를 저장하는 것이 쉬울 때가 있다.
보다시피 다른 모든 속성은 정규 쿠키와 같은 방식으로 설정된다.
어떤 쿠키가 사전인지 아닌지 결정할 때에는 .Haskeys 속성을 사용하면 된다.
<%
If(Request.Cookies("appVendorDB").HasKeys) then
for each obj in Request.Cookies("appVendorDB")
Response.Write "<BR>" & obj & " = " & Request.Cookies("appVendorDB")(obj)
next
Else
Response.Write "appVendorDB = " & Request.Cookies("appVendorDB")
End If
%>
이 코드는 appVendorDB 쿠키를 위해 브라우저에 다음을 출력할 것이다.
UserName = jdoe
UserEmail = jdoe@thecompany.com
FullName = John Doe
empID = 19196
여기에서 쿠키 사전을 위한 서브키를 명시하지 않으면, 모든 서브키 이름과 값이 “&”로 구분된 문자열이 출력될 것이다.
예를 들면,
<%
response.write Request.Cookies("appVendorDB")
%>
는 다음과 같은 문자열을 출력할 것이다.
UserName=jdoe&UserEmail=jdoe@thecompany.com&FullName=John+Doe&empID=19196
삭제
쿠키를 삭제하기 위해서는 그것의 만료 속성을 과거로 설정하면 된다.
<%
Response.Cookies("UserName").Expires=date-1
%>
결론
쿠키는 ASP에서 쉽게 사용할 수 있게 지원되기 때문에 세션 변수를 대신하여 아주 단순하고 효율적으로 사용될 수 있다.
특히 include 파일에 쿠키 유지 코드를 두는 경우에는 숨겨진 폼 필드와 비밀스런 질의문을 유지하는 것보다 쿠키를 이용하는 게 쉽다.
관련자료
http://dojeun.egloos.com/318020
http://trend21c.tistory.com/1073
ASP에 대해 한 번이라도 들어본 사람이라면 세션 변수가 까다롭다는 얘기도 분명히 들어본 적이 있을 것이다. 어플리케이션 상태를 유지하기 위한 세션 변수의 한 가지 대안은 쿠키를 사용하는 것이다. (사실 세션은 쿠키를 사용하여 각 사용자 세션에 유일한 식별자를 적용함으로써 각 세션을 쉽게 구별할 수 있다.) 상태를 유지하기 위한 두 가지 다른 옵션은 숨겨진 폼 필드와 질의문인데, 그것들은 최선의 경우에는 효율적인 해결 방법이 될 수 있지만 최악의 경우에는 그 유지 작업이 악몽과 같을 수 있다. 이 글에서는 HTTP 쿠키에 대한 기본 지식을 다루지 않을 것이다. 쿠키에 대하여 더 알아보려면 www.w3c.org에서 쿠키에 대한 W3C의 참고 스펙을,
ASP와 VBScript를 이용하여 쿠키를 사용하고 상호 대화하는 작업은 JavaScript를 이용하여 같은 작업을 하는 것보다 훨씬 단순하다. ASP와 JavaScript에서 쿠키를 사용해 해 본 적이 있다면 이 말을 실감할 수 있을 것이다.
설정
<%
Response.Cookies("UserName") = "John Doe"
Response.Cookies("UserName").expires = "Jan 1, 2001"
%>
이 코드는 UserName이라는 이름의 쿠키를 설정하고, 그 값을 John Doe로 설정한다. 브라우저는 2001년 1월 1일까지 또는 코드가 브라우저로부터 삭제될 때까지 쿠키를 계속 반환할 것이다. 만료 날짜를 설정하지 않았을 경우, 쿠키는 사용자가 사이트를 떠날 때 만료된다.
위의 코드 예제에서는 만료 속성만을 사용했지만 Cookies 집합에는 추가적인 속성이 있다.
expires – 브라우저가 이 특정 쿠키를 제거할 날짜이다.
domain – 쿠키가 전송되어야 할 특정 도메인을 설정한다. 만일 속성이 설정되지 않았다면 웹 서버의 도메인이 사용된다.
path – 쿠키가 전송되기 전에 페이지가 존재해야 하는 특정 경로를 설정한다. 만일 속성이 설정되지 않았다면 쿠키를 설정한 페이지의 경로가 사용된다.
secure – 암호화된 연결을 통해서만 쿠키가 전송되어야만 한다는 것을 명시한다.
<%
Response.Cookies("UserName") = "John Doe"
Response.Cookies("UserName").expires = "Jan 1, 2001"
Response.Cookies("UserName").domain = "aspwatch.com"
Response.Cookies("UserName").path = "/examples/"
Response.Cookies("UserName").secure = TRUE
%>
수정
쿠키를 수정하는 것은 쿠키를 추가하는 것과 같다. 쿠키를 수정하면 쿠키를 생성하는 것 대신 기존의 쿠키의 값을 대체한다.
예를 들면 다음과 같다.
<%
Response.Cookies("UserName") = "John Doe"
strUser = Request.Cookies("UserName")
Response.Cookies("UserName") = "Jane Doe"
strNewUser = Request.Cookies("UserName")
Response.Write "strUser = " & strUser & "<BR>"
Response.Write "strNewUser = " & strNewUser
%>
이 코드는 같은 쿠키에 접근할 때마다 매번 브라우저에 다음과 같은 단어를 출력할 것이다.
John Doe
Jane Doe
읽기
쿠키를 추가하고 수정하였으니, 이제는 정보를 다시 사용할 수 있도록, 정보를 검색할 수 있게 만들 필요가 있다.
<%
strUserName = Request.Cookies("UserName")
response.write strUserName & "<BR>"
%>
Request 객체의 쿠키 집합은 다음과 같은 여러 가지 속성을 가지고 있다.
item – 쿠키 집합에서 특정 쿠키의 값을 표현
key – 쿠키 집합에서 특정 쿠키의 이름을 표현
count – 쿠키 집합에서 기본 원소의 수를 표현
예를 들어, 쿠키 집합에서 세 번째 기본 원소로 알려진 쿠키로부터의 값을 추출하기 위한 코드를 작성하기 위해서는 다음과 같이 코드를 작성하면 된다.
<%
strCookieName = Request.Cookies.Key(3)
strUserName = Request.Cookies.Item(strCookieName)
%>
Request.Cookies("UserName")는 Request.Cookies.Item("UserName")의 단순한 생략형이라는 것에 주목하자.
쿠키를 통하여 서너 개 이상의 정보 조각을 유지해야 할 필요가 있다면, 이와 같은 단순한 쿠키가 실제로 대단히 유용하다. 언제나 다음과 같이 작성하면 된다.
<%
Response.Cookies("특정_키_이름") = "특정 텍스트"
%>
브라우저에 새로운 쿠키를 추가하려 해도, 어떤 브라우저은 도메인 당 서너 개의 쿠키만을 지원하기도 한다. 그러므로 이것을 처리하기 위해서는 Cookie Dictionary가 추가되어야 한다.
쿠키 사전 (Dictionaries)
쿠키 사전은 다중 이름/값 아이템 또는 키를 갖는 하나의 쿠키이다. 쿠키 사전을 이용하면 하나의 쿠키로 모든 상태 데이터를 유지할 수 있다.
<%
Response.Cookies("appVendorDB")("UserName") = "jdoe"
Response.Cookies("appVendorDB")("UserEmail") = "jdoe@thecompany.com"
Response.Cookies("appVendorDB")("FullName") = "John Doe"
Response.Cookies("appVendorDB")("empID") = "19196"
Response.Cookies("appVendorDB").expires = "Jan 1, 2001"
%>
이 코드는 "appVendorDB”라 불리는 쿠키를 생성하고, 그 쿠키를 위한 4개의 다른 서브키로서 "UserName", "UserEmail", "FullName", "empID"를 생성한다. 쿠키에서 이러한 정보를 유지하고 싶어하는 한가지 이유는, 이 정보에 계속해서 접근해야만 하는 경우에 데이터베이스 연결의 부하를 줄이기 위한 것이다. 때때로 empID를 저장하고 나머지 다른 정보를 얻기 위해 데이터베이스를 질의하는 것보다 쿠키에 이 정보를 저장하는 것이 쉬울 때가 있다.
보다시피 다른 모든 속성은 정규 쿠키와 같은 방식으로 설정된다.
어떤 쿠키가 사전인지 아닌지 결정할 때에는 .Haskeys 속성을 사용하면 된다.
<%
If(Request.Cookies("appVendorDB").HasKeys) then
for each obj in Request.Cookies("appVendorDB")
Response.Write "<BR>" & obj & " = " & Request.Cookies("appVendorDB")(obj)
next
Else
Response.Write "appVendorDB = " & Request.Cookies("appVendorDB")
End If
%>
이 코드는 appVendorDB 쿠키를 위해 브라우저에 다음을 출력할 것이다.
UserName = jdoe
UserEmail = jdoe@thecompany.com
FullName = John Doe
empID = 19196
여기에서 쿠키 사전을 위한 서브키를 명시하지 않으면, 모든 서브키 이름과 값이 “&”로 구분된 문자열이 출력될 것이다.
예를 들면,
<%
response.write Request.Cookies("appVendorDB")
%>
는 다음과 같은 문자열을 출력할 것이다.
UserName=jdoe&UserEmail=jdoe@thecompany.com&FullName=John+Doe&empID=19196
삭제
쿠키를 삭제하기 위해서는 그것의 만료 속성을 과거로 설정하면 된다.
<%
Response.Cookies("UserName").Expires=date-1
%>
결론
쿠키는 ASP에서 쉽게 사용할 수 있게 지원되기 때문에 세션 변수를 대신하여 아주 단순하고 효율적으로 사용될 수 있다.
특히 include 파일에 쿠키 유지 코드를 두는 경우에는 숨겨진 폼 필드와 비밀스런 질의문을 유지하는 것보다 쿠키를 이용하는 게 쉽다.
관련자료
http://dojeun.egloos.com/318020
http://trend21c.tistory.com/1073
댓글목록
등록된 댓글이 없습니다.