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로 변경시켜주도록 한다. 이제 위에서 예를 든 경우를 어떻게 구현하는지 알아 보자.
위와 같은 경우 Response.redirect에는 http%3A%2F%2Fankyu%2Eentersoft%2Ekr%2Fdefault%2Easp%3Fid%3D123%26usr%3Dankyu 이란 값이 넘어가게 된다. 그렇다면 login.asp에서는 인코딩 된 URL을 어떻게 받을 수 있을까? login.asp에서는 특별히 해줄 것이 없다. 원래 하던대로 다음과 같이 Request.Querystring만 호출해주면 된다. Request.Querystring("backlink")
|
|||||||||||