以前感覺Request.ServerVariables裡的值很多,現在看看還是那麼多,不過今天談其中的一個值----HTTP_Referer以及Request.ServerVariables裡Server_Name與Http_Host之間有什麼差別呢?
剛剛運行了一段程式碼,來查看Request.ServerVariables裡面有多少值,看了一下,共50個!
程式碼<%=Request.ServerVariables.count%>
以前感覺Request.ServerVariables裡的值很多,現在看看還是那麼多,不過今天談其中的一個值----HTTP_Referer
首先,我們先知道HTTP_Referer最常用的應用程式就是能夠防止外部提交。
下列情況是從瀏覽器的網址列正常取得Request.ServerVariables(HTTP_REFERER):
1) 直接用<a href=>
2) 用Submit或<input type=image>提交的表單(POST或GET)
3) 使用JAvaScript提交的表單(POST或GET)
下面我們再來看看Request.ServerVariables(HTTP_REFERER)不能正常取值的情況:
1) 從收藏夾鏈接
2) 點選主頁或自訂的位址
3) 在瀏覽器中直接傳送地址
4) 使用JavaScript的Location.href或是Location.replace()
5) <%Response.Redirect%>
6) <%Response.AddHeader%>或<mete http-equiv=refresh>轉向
7) 用XML載入位址
顯然,Request.ServerVariables(HTTP_REFERER)在多數情況下是不能正常運作的。關於它的具體用法我會在以後的文章中詳細的介紹,同時也會介紹Request.ServerVariables(HTTP_HOST)Request.ServerVariables(SERVER_NAME)之間的差異。
敬請關注!
Request.ServerVariables裡Server_Name與Http_Host有什麼差別呢?
如果不仔細看,您應該看不出它們之間的差異。在網路上搜了很多,還是也沒看懂,但最後還是有一句話很是明白:Http_Host可以Request出非80的Server_Port,簡單地說就是,Http_Host=Server_Name:Server_Port。
在先前發表過關於Http_Referer作用的文章,現在結合它來寫一個ASP防止外部提交的函數
複製程式碼如下:function ChkPost()
dim server_v1,server_v2
chkpost=false
server_v1=Cstr(Request.ServerVariables(HTTP_REFERER))
server_v2=Cstr(Request.ServerVariables(SERVER_NAME)) If8M(
) <>server_v2 then
chkpost=False
else
chkpost=True
end If
end function
Select Case
假如你希望選擇多套代碼之一來執行,可以使用SELECT 語句:
複製代碼代碼如下:
select case payment
case Cash
msgbox You are going to pay cash
case Visa
msgbox You are going to pay with visa
case AmEx
msgbox You are going to pay with American Express
case Else
msgbox Unknown method of payment
end select
以上程式碼的工作原理:首先,我們需要一個簡單的表達式(常常是一個變數),而這個表達式會被做一次求值運算。然後,表達式的值會與每個case 中的值作比較,如果匹配,則會被匹配的case 所對應的程式碼會被執行。