2016-03-23 6 views
0

Ich habe eine Website mit klassischen Asp mit VBScript. Wie kann ich überprüfen, ob ein Benutzer aus einem bestimmten Verzeichnis auf meiner Site kommt? Ich habe diesen Code bekamPlatzhalterzeichen verfügbar in Asp-Klassiker?

<%Response.Write(Request.ServerVariables("http_referer"))%> 

, die schreibt: http://example.com/mobile/REFER.asp. Ich möchte eine if/else-Anweisung schreiben, die zuerst prüft, ob sich die verweisende URL im Verzeichnis http://example.com/mobile/ befindet.

Also sollte mein Code etwas wie das Folgende sein. Aber ich bin mir nicht sicher über die Syntax. Gibt es so etwas wie ein Wildcard-Zeichen ist asp?

<% Request.ServerVariables("http_referer") == "http://example.com/mobile/*" 

Schließlich würde Ich mag, dass die Verwendung einer if/else-Anweisung

<% if Request.ServerVariables("http_referer") != "http://example.com/mobile/*" then 
null; elseif (screen.width <= 699) { 
    document.location = "/mobile/mobile_home.asp"; 
    } %> 

===

Ended aufzuschreiben Bearbeitung @ mikeyq6 ist Javascript Probe dazu, die funktioniert:

+0

beachten Sie, dass jeder Ansatz, der eine hart codierte URL isn verwendet‘ t die beste Idee, besonders unter Wartungsgesichtspunkten. Wenn Sie dies tun müssen, sollten Sie in Betracht ziehen, in einer URL zu speichern, die Sie in einer [Anwendung] (https://msdn.microsoft.com/en-us/library/ms525360 (v = vs.90) .aspx) -Objektebene überprüfen möchten Variable, so können Sie es einmal innerhalb 'global.asa' definieren und bei Bedarf aufrufen. – Lankymart

Antwort

0

Im Wesentlichen handelt es sich um eine Zeichenkette, so dass Sie auf diese Weise keine Platzhalter verwenden können (außer Sie waren es) um reguläre Ausdrücke zu verwenden, was ist wie ein Nagel mit einem Vorschlaghammer in diesem Fall zu schlagen)

Es wäre viel einfacher, die InStr Funktion zu verwenden, um zu überprüfen, ob der Wert die Zeichenfolge enthält, nach der Sie suchen. ZB:

<% if InStr(Request.ServerVariables("http_referer"), "http://example.com/mobile/") = 0 then 
    null 
elseif (screen.width <= 699) { 
    document.location = "/mobile/mobile_home.asp"; 
} %> 

Weitere Informationen über InStr hier: http://www.w3schools.com/asp/func_instr.asp

Sie etwas ähnliches in Javascript tun können, als auch:

if(window.location.href.indexOf("http://example.com/mobile/") > -1 && 
    screen.width <= 699) { 

    document.location = "/mobile/mobile_home.asp"; 
} 

Beachten Sie, dass ich die if...else auch vereinfacht. Sie brauchen nicht beide Fälle.

+0

Hoppla. Also habe ich anscheinend sowohl asp als auch javascript gemischt. Gibt es eine JavaScript-Entsprechung für InStr (Request.ServerVariables ("http_referer")? – testing123

+0

@ user5753132 Ich habe ein Beispiel in Javascript am Ende der Antwort hinzugefügt – mikeyq6

0

Sie kennen die Länge der festen URL Sie suchen also nur sehen, wenn die ersten n Zeichen des referer Spiel es:

const BASE_DIR = "http://example.com/mobile/" 

dim referer: referer = lcase(Request.ServerVariables("http_referer")) 

if left(referer, len(BASE_DIR)) = BASE_DIR then 
    ... 
else 
    ... 
end if