2010-11-24 13 views
1

私はもっと.Netの人ですが、私が現在取り組んでいるサイトには、いくつかの従来のClassic 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> 

このコードはほとんどの場合、大丈夫です。このコードを新しいバージョンのフォームで使用しようとすると、2つの問題が発生します。まず、入力自体はまったく設定されません。私はコードがデフォルトを持っているので、なぜそれが常に "自己"であるべきなのかは分かりません。 2番目の問題は、私が書いたのではなく元のコードが<%oReferer%>を使って値を設定していたことです。私がこれを行うと、VBScriptのエラー、「型の不一致」が発生します。

私は.Netの男だと言って、これを.Netで解決することは問題ではありません。私はClassic ASPも知らないし、困惑している。私は.Netに変更したいと思っていますが、この特定の形式のためには今はできません。だから、これを理解する助けがあれば素晴らしいでしょう。

+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")%>を使用してこの問題の解決策を見つけ、今後この情報を常にCookieに送信します。私が知ることができる最高ののは、oRefererに格納されている値が、それを設定するコードとそれを取得する呼び出しとの間で失われているということです。 – CoreyT

+0

ポイントは、コードに空の 'oReferer'や空の' Request.Cookies( "OrigReferer") 'が出てくるいくつかの方法があるということです。 –

関連する問題