안규 공부방

ACTIVE SERVER PAGE > URLEncode - ANSI - 인코딩 하자. Server.URLEncode()

등록일 : 2017-07-04 17:47 조회수 : 93,047

ASP에서 숫자, 알파벳 문자가 아닌 것(0~9, a~z이 아닌 문자)을 아스키 헥사 코드로 변환시켜주는 메쏘드가 있다.

그것은 바로 Server.UrlEncode이다.

이 메쏘드는 해당 문자를 16진수 아스키 코드로 변환시킨 후 그 앞에 %를 붙인다(빈 문자열은 + 기호로 변환된다). 예를 들어,
  
strURL = "http://ankyu.entersoft.kr/default.asp?id=123&usr=ankyu"

이라고 되어 있는 문자열을 Server.UrlEncode(strURL) 메쏘드를 통해 다음과 같이 변경시킬 수 있다:

http%3A%2F%2Fankyu%2Eentersoft%2Ekr%2Fdefault%2Easp%3Fid%3D123%26usr%3Dankyu

아마도 이 메쏘드를 어떤 경우에 사용할지 궁금한 사람들이 있을 것이다.

그렇다면 다음과 같은 경우를 살펴 보자. 만일 어떤 URL에서 QueryString으로 원하는 값을 받으려고 할 때 다음과 같이 어떤 주소 값을 받아야 할 경우가 있다:

<a href="http://www.myserver.com/SomePage.asp?URL=http://ankyu.entersoft.kr/default.asp?id=123&usr=ankyu"> 클릭하세요! </a>

위의 코드는 querystring으로?URL=http://ankyu.entersoft.kr/default.asp?id=123&usr=ankyu 부분을 http://www.myserver.com/SomePage.asp에 넘긴 경우이다.

위와 같은 경우 ? 표시가 두 군데(하나는 SomePage.asp다음에, 또 하나는 default.asp 다음에) 있기 때문에 querystring을 캡쳐해오는데

어려움을 겪을 수 있다. 또한 & 표시를 기준으로 "변수이름/값"이 하나의 쌍으로 이루어진 querystring에서 위와 같은 경우

URL=http://ankyu.entersoft.kr/default.asp?id=123과 usr=ankyu 란 두 개의 변수이름/값 쌍이 존재하는 것으로 IIS는 생각할 수가 있다.

하지만 그 URL 주소를 생성한 사람은 URL이란 변수에 http://ankyu.entersoft.kr/default.asp?id=123&usr=ankyu 이란 값이 들어 있는 하나의

변수이름/값 쌍을 염두에 두었을 것이다. 조금 장황하게 설명하긴 했지만, 이런 문제를 해결하기 위해 Server.UrlEncode를 사용할 수가 있다.

이런 문제가 가장 빈번히 생길 수 있는 경우는, 다음과 같은 경우이다.

회원인증을 거쳐야지만 어떤 페이지를 볼 수 있도록 한 사이트에서, 로그인을 거치지 않은 사용자가 해당 페이지에 접근하려고

하면 먼저 로그인 페이지로 유도한 후 로그인을 했을 경우 원래 접근하려고 했던 페이지로 이동시켜주는 경우를 생각해 보자.

이럴 경우 로그인 페이지인 login.asp에 원래 접근하고자 했던 페이지가 있는 URL 주소를 querystring으로 넘겨준다.

이 때 URL 주소에도 역시 querystring이 있을 경우 이 URL 주소를 Server.UrlEncode로 변경시켜주도록 한다.

이제 위에서 예를 든 경우를 어떻게 구현하는지 알아 보자.
 
strURL = "http://ankyu.entersoft.kr/default.asp?id=123&usr=ankyu"
	strEncodedUrl = Server.UrlEncode(strURL) 
	Response.redirect "login.asp?backlink=" & strEncodedUrl



위와 같은 경우 Response.redirect에는 http%3A%2F%2Fankyu%2Eentersoft%2Ekr%2Fdefault%2Easp%3Fid%3D123%26usr%3Dankyu 이란 값이 넘어가게 된다.

그렇다면 login.asp에서는 인코딩 된 URL을 어떻게 받을 수 있을까? login.asp에서는 특별히 해줄 것이 없다. 원래 하던대로

다음과 같이 Request.Querystring만 호출해주면 된다.


Request.Querystring("backlink")
 
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.