2010-11-24 6 views
1

Je suis davantage un gars .Net, mais le site sur lequel je travaille actuellement a quelques anciennes pages ASP classiques qui traînent. Dans l'une des formes que nous avons deux ou trois entrées cachées qui se défini sur les variables créées et définir par un VBScript au début de la page comme ceci:Entrée de liaison ASP classique à la variable

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

Cette variable est définie avec le VBScript suivant:

<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> 

Ce code fonctionne très bien, la plupart du temps. Lorsque j'essaie d'utiliser ce code dans une version plus récente du formulaire, j'ai deux problèmes. D'abord, l'entrée elle-même ne se règle pas du tout. Je ne suis pas sûr pourquoi comme le code a un défaut donc il devrait toujours au moins être "soi". Le deuxième problème est que le code original, pas écrit par moi, a travaillé en utilisant <% oReferer%> pour définir la valeur. Lorsque je fais cela maintenant, je reçois une erreur VBScript, "type incompatibilité".

Comme je l'ai dit je suis un gars .Net et résoudre ce problème dans .Net n'est pas un problème. Je ne connais pas ASP classique et je suis perplexe. J'aimerais changer pour .Net mais ne peux pas pour cette forme particulière en ce moment, ainsi n'importe quelle aide pour comprendre ceci serait grande.

+0

Il devrait vous dire quelle ligne l'erreur s'est produite, pouvez-vous le mettre en évidence dans le code s'il vous plaît? –

+0

'<% oReferer%>' doit probablement être '<% = oReferer%>' (ie avec un signe égal) –

+0

Oui, vous avez absolument besoin du signe '='. Essayez d'ajouter quelque chose à la valeur de ligne 'oReferer = Request.Cookies (" OrigReferer ") &" ** "' pour voir si vous exécutez cette ligne. Si le cookie OrigReferer est vide, 'oReferer' sera également vide (vide) et aucune valeur ne sera écrite dans la ligne' <% = oReferer%> '. – Edelcom

Répondre

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

J'ai ajouté un simple oReferer = Request.Cookies ("OrigReferer") comme vous l'avez suggéré, et je vois toujours le même comportement. Le champ caché ne se règle pas du tout. Je peux voir le cookie se mettre en place quand il est censé le faire, mais quelque chose l'empêche d'entrer dans le champ caché. Existe-t-il une alternative à l'utilisation du code <% = oReferer%>? – CoreyT

+0

J'ai trouvé une solution au problème en utilisant <% = Request.Cookies ("OrigReferer")%> et en envoyant toujours l'information au cookie à partir de maintenant. Le mieux que je peux comprendre, c'est que la valeur stockée dans oReferer est perdue entre le code qui la définit et l'appel pour l'obtenir. – CoreyT

+0

Le fait est que le code a plusieurs façons de trouver un 'oReferer 'vide ou un' Request.Cookies' vide ("OrigReferer") ' –