其實從技術角度來(lái)判斷國内IP還(hái)是國外IP是需要通(tōng)過大(dà)量的(de)IP庫來(lái)判斷的(de),像我們平時(shí)看見的(de)再一個(gè)網站上一下(xià)就查詢出來(lái)到底是屬于哪個(gè)國家的(de)而且能細化(huà)到那個(gè)地區(qū)這(zhè)是需要先做(zuò)一個(gè)IP庫然後通(tōng)過查詢才能查到的(de),不能單純的(de)從IP段來(lái)實現跳轉頁面的(de)功能。
我們在這(zhè)裏可(kě)以分(fēn)析下(xià)如何通(tōng)過IP段來(lái)實現跳轉頁面代碼如下(xià)
ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")if ip<>220.129.23 then Response.Redirect("en/index.asp") ‘實現跳轉功能end if上面這(zhè)代碼一般情況下(xià)可(kě)以使用(yòng),如果遇到IP段就必須使用(yòng)字符查詢函數ip=Request.ServerVariables("HTTP_X_FORWARDED_FOR")if InStr(content,"220.129") > 0 '字符查詢國内IP段Response.Redirect("en/index.asp")end if
上面講的(de)代碼都是在我們掌握了(le)IP或者是IP段,IP庫的(de)前提使用(yòng)的(de)。如果我們沒有這(zhè)些判斷國内和(hé)國外IP就非常難,小編就推薦你使用(yòng)另外一種判斷IP的(de)代碼
dim aaaa=Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") '判斷字符集,if instr(aa,"zh")=1 then ‘判斷字符集是否包含zh字段,如果包含就跳轉response.Redirect "http://www.puyi.sh.cn/index.asp"elseresponse.Redirect "http://puyi.sh.cn/index.asp"end if
上面代碼就是通(tōng)過浏覽器所用(yòng)的(de)字符集,一般國外肯定不會用(yòng)中國的(de)字符集的(de)。
ASP獲取客戶端IP地址并判斷是不是國内IP,從而實現不同的(de)跳轉:
方法一:
Function leleToStr(str)Dim streamSet stream=Server.CreateObject("ADODB.Stream")With stream .Type=1 .Mode=3 .Open .Write str .Position = 0 .Type = 2 .Charset = "gb2312" leleToStr = .ReadText .CloseEnd WithSet stream=NothingEnd Function'獲取IP所在地區(qū)Function getIPAddress()on error resume nextdim xmlhttp,urlurl = "http://ip.qq.com"set xmlhttp = server.CreateObject("Msxml2.XMLHTTP")xmlhttp.open "get",url,falsexmlhttp.send'開始截取字符 dim StartStr,EndStr,htmlhtml = leleToStr(xmlhttp.responseBody)StartStr = Instr(html,"所在地爲:") EndStr = Instr(html,"如果該IP") html = mid(html,StartStr,EndStr-StartStr)'再次獲取StartStr = Instr(html,"")StartStr = StartStr + 6EndStr = Instr(html,"")html = mid(html,StartStr,EndStr-StartStr)getIPAddress = htmlif err then err.clear:html = ""set xmlhttp = nothingEnd Functionif Instr(getIPAddress(),"中國")>0 then Response.Redirect("index.php")else Response.Redirect("e_index.php")end if