OK論壇

 找回密碼
 註冊
查看: 1327|回復: 0

如何判斷來訪者IP並自動轉換成中文網站或英文網站

 關閉 [複製鏈接]
  • TA的每日心情
    開心
    2015-8-6 04:09 AM
  • 簽到天數: 159 天

    連續簽到: 1 天

    [LV.7]常住居民III

    發表於 2009-8-26 00:01:23 | 顯示全部樓層 |閱讀模式
    各位應該常看一些網站有英文版及繁體版及簡體版的選項
    可是都必需來訪者自行點選他所會的語言網站
    昨天突發奇想的不如自己寫一個自動辨別來訪者的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()
    回復

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2025-6-24 04:26 PM , Processed in 0.050553 second(s), 20 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表