ASP 파라메터 컨트롤 함수

ASP 2012. 1. 9. 17:25 Posted by Dayis

url 정보의 파라메터 및 쿼리스트링 자유롭게 조정하는 함수개발 중에 만들어진 함수 입니다.
각 페이지마다 링크걸기가 귀찮고, 소스가 지져분해져서 만들게 되었네요.

해당 페이지의 파라메터 정보 즉, 쿼리스트링을 불러오는 함수입니다.
불러온 파라메터의 부분 부분 삭제 및 수정이 가능하여 사용이 편리하다는 장점이 있습니다.

이동할 페이지가 정해져 있고 파라메터로 페이지 컨트롤할 경우 ?chn=blog
? 를 붙여 주시면 됩니다. ^-^ 대부분 아시겠지만 ... 1%를 위해서!!

* 자주 사용하는 함수명은 짧은게 좋아요 !!
* 페이지 이동을 파라메타로 개발하시는 분에게 권하는 함수입니다.
index.asp -> list.asp (x)
index.asp -> index.asp?mode=list (o)

-------------------------------------------------------------------------------------------

 

[2008.03.26] 값 없는 파라메터 필터링
chn=blog&mode=syaku&type=&page=2
위와 같은 파라메터인 경우 &type= 부분은 자동 삭제됩니다.
chn=blog&mode=syaku&page=2

[2008.05.29] 
값이 없는 파라메터 자동 삭제 버그 수정 (위 방법 올바르게 안되는 부분 수정)

이전 페이지 값 가져 오기
예) 로그인 하지않은 상태에서 특정페이지에 접근하게 되면, 이전 페이지의 파라메터 정보를 읽어 
로그인 페이지로 전송하면 됩니다.

[2008.06.30]
쿼리스트링 끝 부분에 & 가 붙는 경우 삭제함.

# 원본 소스
<%@LANGUAGE="VBSCRIPT"%>
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
<% Option Explicit %>

<%
Public Function Para(Ar)
        Dim Reg
        Dim query,reg_query,key,str
        query = Request.ServerVariables("QUERY_STRING")
        
        Set Reg = New RegExp
        Reg.Global = True
        
        '// 2008.03.26 파라메터 필터링 1차 수정
        '//Reg.Pattern = "([A-Za-z0-9_-]+)=(&|$)"
        '//query = Reg.Replace(query,"&")
        
        '// 2008.05.29 파라메터 필터링 2차 수정
        Reg.Pattern = "(&|)([A-Za-z0-9\%\_\-]+)=(&|$)"
        query = Reg.Replace(query,"&")
        
        If IsArray(Ar) Then
                For Each key In Ar
                        str = key(0) & "=" & key(1)
                        Reg.Pattern = "(" & key(0) & ")=([^&]+)?"
                        If key(1) = "" Then
                               query = Reg.Replace(query,"")
                        Else
                               query = Reg.Replace(query,str)
                        End If
                Next 
        
        '// 2008.05.29 이전 페이지 돌아가기
        Else
                If Ar = "HTTP_REFERER" Then
                        query = Request.ServerVariables("HTTP_REFERER")
                        
                        Reg.Pattern = "^(http|ftp|mail|https):\/\/(.*)\/(.*)\?"
                        query = Reg.Replace(query,"")
                End If
        End If
        
        '// 200.06.30 끝부분에 & 붙으면 제거함.
        Reg.Pattern = "&$"
        query = Reg.Replace(query,"")
        Set Reg = Nothing
        
        Para = query
End Function
%>

 

#예제 소스
<%@LANGUAGE="VBSCRIPT"%>
<% Option Explicit %>
<%
'// 현 파라메터 불러오기
response.write Para("") & "<br>"
'// 결과 : chn=blog&mode=syaku&page=2

'// 현 파라메터 일부분 수정하기
response.write Para(Array(Array("mode","kor_no"))) & "<br>"
'// 결과 : chn=blog&mode=kor_no&page=2

'// 현 파라메터 일부분 삭제하기
response.write Para(Array(Array("&page",""))) & "<br>"
'// 결과 : chn=blog&mode=syaku

'// 현 파라메터 여러부분 수정및 삭제하기
response.write Para(Array(Array("chn","good"),Array("mode","end"),Array("&page",""))) & "<br>"
'// 결과 : chn=good&mode=end

'// 이전페이지 파라메터 읽어오기
response.write Para("HTTP_REFERER") & "<br>"
%>

'ASP' 카테고리의 다른 글

ASP 프레임워크(Framework)  (0) 2014.12.05
ASP 입력값 Replace (따옴표, 작은따옴표..)  (0) 2013.05.01
jquery 파일 업로드  (0) 2010.12.10
구글맵  (0) 2010.12.09
구글맵 API Key 생성 URL  (0) 2010.12.01