Классический ASP связывает ввод с переменной - PullRequest
1 голос
/ 24 ноября 2010

Я скорее парень .Net, но на сайте, над которым я сейчас работаю, есть несколько классических ASP-страниц.В одной из форм у нас есть пара скрытых входных данных, которые устанавливаются в переменные, создаваемые и устанавливаемые некоторым VBScript в начале страницы, например так:

<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 не проблема.Я не знаю Classic ASP, и я в тупике.Я хотел бы перейти на .Net, но не могу для этой конкретной формы прямо сейчас, поэтому любая помощь, чтобы понять это было бы здорово.

1 Ответ

1 голос
/ 24 ноября 2010
<%
    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
 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...