UID6439
帖子
精華
主題
積分109057
現金
積極性
威望
違規
熱心
推廣次數
閱讀權限50
註冊時間2007-8-25
在線時間 小時
最後登錄1970-1-1
TA的每日心情 | 開心 2015-8-6 04:09 AM |
---|
簽到天數: 159 天 連續簽到: 1 天 [LV.7]常住居民III
|
各位應該常看一些網站有英文版及繁體版及簡體版的選項
可是都必需來訪者自行點選他所會的語言網站
昨天突發奇想的不如自己寫一個自動辨別來訪者的IP
並依他所在的國家及IP位置自動呈現專屬他的語言網站
比如:來訪者是在美國,程式自動分析IP是來至美國,就直接跳到英文版
本程式皆以ASP.NET之VB.NET設計,C#請自行轉換
首先:我們先來看如何取得來訪者的IP
Private bc As New BaseClass()
Dim UserIP As String
Dim UserIPN As String
UserIP = Request.ServerVariables("REMOTE_ADDR")
就這麼簡單馬上取得來訪者的IP了
接下來就是將IP編碼轉換,在此需要"ipConvert"函數幫忙
UserIPN = bc.ipConvert(UserIP)
Public Function ipConvert(ByVal ipA As String)
Dim strO, strO2, strO3 As String
Dim pos1, pos2, pos3, intA, intB, intC, intD, intConvert As Long
strO = ipA
pos1 = InStr(strO, ".")
intA = CInt(Left(strO, (pos1 - 1)))
strO2 = Mid(strO, pos1 + 1, Len(strO))
pos2 = InStr(strO2, ".")
intB = CInt(Left(strO2, (pos2 - 1)))
strO3 = Mid(strO2, pos2 + 1, Len(strO2))
pos3 = InStr(strO3, ".")
intC = CInt(Left(strO3, (pos3 - 1)))
intD = CInt(Mid(strO3, pos3 + 1, Len(strO3)))
intConvert = (intA * (256 * 256 * 256)) + (intB * (256 * 256)) + (intC * 256) + intD
ipAd2ipNum = Trim(intConvert)
End Function
這樣就能將來訪者IP轉換成我們要進資料庫查詢的碼了
現在我們來看看資料庫select的語法
Dim IPDs As DataSet = bc.GetDataSet("select country_code2,country_name from ip2country where ip_from <= '" & UserIPN & "'", "ip2country")
If IPDs.Tables("ip2country").Rows.Count > 0 Then
If IPDs.Tables("ip2country").Rows(0).Item("country_name") = "CHINA" Or IPDs.Tables("ip2country").Rows(0).Item("country_name") = "TAIWAN" Then
Response.Redirect("cht/default.aspx")
Else
Response.Redirect("en/default.aspx")
End If
End If
以上就能輕鬆的將來訪者分到他專屬的語言網頁了
在此先說明一下,本程式是寫在本人開發的class裡,所以各位可看到第一行的宣告
Private bc As New BaseClass() |
|