2010-11-24 2 views
1

.Net 녀석이 더 많지만, 현재 작업하고있는 사이트에는 기존 클래식 ASP 페이지가 일부 있습니다. 양식 중 하나에서 우리는과 같이 페이지의 시작 부분에 약간의 VBScript를 만든 변수로 설정하고 설정 얻을 숨겨진 입력의 몇 가지있다 :변수에 대한 기본 ASP 바인드 입력

<input name="referer" type="hidden" value="<%= oReferer %>" /> 

변수는 다음의 VBScript로 설정되어 있는지 :

<script type="text/vbscript" language="vbscript" runat="server"> 
     dim oReferer 
     dim origReferer, arrRefer1, arrRefer2 
     origReferer = "self" 

     'response.Write("referer - " & Request.ServerVariables("HTTP_REFERER")) 
     'response.End() 
     if not Request.ServerVariables("HTTP_REFERER") = "" then 
      if not Request.ServerVariables("HTTP_COOKIE") = "" then 
       if not len(Request.Cookies("OrigReferer")) > 0 then 
        arrRefer1 = split(Request.ServerVariables("HTTP_REFERER"),"//") 
        if UBound(arrRefer1) > 0 then 
         arrRefer2 = split(arrRefer1(1), "/") 
         if UBound(arrRefer2) > 0 then 
          origReferer = arrRefer2(0) 
         end if 
        end if 
        Response.Cookies("OrigReferer") = origReferer 
        Response.Cookies("OrigReferer").Expires = DateAdd("d", 120, Date()) 
       else 
        oReferer = Request.Cookies("OrigReferer") 
       end if 
      else 
       oReferer = "no cookies" 
      end if 
     else 
      oReferer = "self" 
     end if 
<script> 

이 코드는 대부분 정상적으로 작동합니다. 이 코드를 새 버전의 양식에서 사용하려고하면 두 가지 문제가 발생합니다. 먼저 입력 자체가 전혀 설정되지 않습니다. 왜 코드가 기본값을 가지고 있는지 항상 확신 할 수 없으므로 항상 적어도 "자체"가되어야합니다. 두 번째 문제는 나에 의해 작성되지 않은 원래 코드가 < % oReferer %>을 (를) 사용하여 값을 설정했다는 것입니다. 이제 VBScript 오류 인 "형식이 일치하지 않습니다."가 나타납니다.

내가 말한 것처럼 .Net 녀석과 .Net에서 이것을 해결하는 것은 문제가되지 않습니다. 클래식 ASP도 잘 모르겠다. 닷넷으로 바꾸고 싶지만 지금 당장은이 특별한 형식이 될 수는 없으므로 이것을 이해하는 데 도움이 될 것입니다.

+0

오류가 발생한 줄을 알려 주어야합니다. 코드에서 강조 표시 할 수 있습니까? –

+0

'<% oReferer %>'는 아마도'<% = oReferer %>'일 필요가 있습니다. (즉, 등호가 붙어 있습니다.) –

+0

네, 분명히'= '기호가 필요합니다. 'oReferer = Request.Cookies ("OrigReferer") & "**"'행 값에 뭔가를 추가하여이 행을 실행하는지보십시오. OrigReferer 쿠키가 비어 있으면'oReferer'도 공백 (비어 있음)이되며'<% = oReferer %> '행에는 값이 기록되지 않습니다. – Edelcom

답변

1
<% 
    dim oReferer 
    dim origReferer, arrRefer1, arrRefer2 
    origReferer = "self" 

    if not Request.ServerVariables("HTTP_REFERER") = "" then 
     if not Request.ServerVariables("HTTP_COOKIE") = "" then 
      if not len(Request.Cookies("OrigReferer")) > 0 then 
       arrRefer1 = split(Request.ServerVariables("HTTP_REFERER"),"//") 
       if UBound(arrRefer1) > 0 then 
        arrRefer2 = split(arrRefer1(1), "/") 
        if UBound(arrRefer2) > 0 then 
         origReferer = arrRefer2(0) 
        end if 
       end if 
       Response.Cookies("OrigReferer") = origReferer 
       Response.Cookies("OrigReferer").Expires = DateAdd("d", 120, Date()) 

       ''// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
       ''// The problems is that you are not 
       ''// setting the oReferer variable here 
       ''// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

      else 
       oReferer = Request.Cookies("OrigReferer") 
      end if 
     else 
      oReferer = "no cookies" 
     end if 
    else 
     oReferer = "self" 
    end if 

    response.write "----------<br>" 
    response.write "oReferer=" + oReferer 
%> 
+0

당신이 제안한 것처럼 간단한 oReferer = Request.Cookies ("OrigReferer")를 추가했는데, 여전히 같은 동작을 보았습니다. 숨겨진 필드가 전혀 설정되지 않습니다. 쿠키가 있어야 할 때 쿠키를 볼 수 있지만 뭔가 숨겨진 필드에 들어가는 것을 막을 수 있습니다. <% = oReferer %> 코드를 사용하는 대안이 있습니까? – CoreyT

+0

<% = Request.Cookies ("OrigReferer") %>를 사용하여이 문제에 대한 해결책을 찾았으며 지금부터 쿠키에 정보를 항상 보냅니다. 내가 생각할 수있는 가장 좋은 점은 oReferer에 저장된 값이 코드 설정과 호출 사이에 손실된다는 것입니다. – CoreyT

+0

요점은 그 코드가 빈'oReferer' 또는 비어있는'Request.Cookies ("OrigReferer")'가 나온다는 것입니다. –

관련 문제