ASP編程中,判斷客戶端IP地址是否屬于多個預定義IP地址的常見方法是使用Instr函數。然而,直接用Instr函數搜索逗號分隔的IP地址列表并不可行,因為它會將整個字符串視為一個整體進行匹配。
以下代碼片段演示了錯誤的方法:
aa = Request.ServerVariables("REMOTE_ADDR") If Instr(aa, "99.88,110.52,43.80.235,11.9.67.180") > 0 Then Response.Write "ok" Response.End End If
正確的做法是將IP地址列表轉換為數組,然后循環遍歷數組,使用Instr函數逐個匹配。
改進后的代碼如下:
<% Dim aa, ipList(), i, found aa = Request.ServerVariables("REMOTE_ADDR") ipList = Split("99.88,110.52,43.80.235,11.9.67.180", ",") found = False for i = 0 To UBound(ipList) If Instr(1, aa, ipList(i)) > 0 Then found = True Exit For End If Next If found Then Response.Write "ok" Response.End End If %>
這段代碼首先將逗號分隔的IP地址字符串轉換為ipList數組。然后,它使用For…Next循環遍歷數組中的每個IP地址,并使用Instr(1, aa, ipList(i))檢查客戶端IP地址aa是否包含當前IP地址。Instr(1, …)表示從字符串的第一個字符開始搜索。如果找到匹配項,則將found變量設置為True并退出循環。最后,如果found為True,則輸出”ok”。 這種方法有效地解決了在ASP中使用Instr函數判斷客戶端IP是否在多個IP地址列表中的問題。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END