zoukankan      html  css  js  c++  java
  • 根据ip地址跳转到不同的省市

    这个asp版本的,其他的版本原理一直。

    新浪ip地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=

    给ip传入什么,就查询那个ip的地址信息。

    http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=27.225.173.43

    返回Json数据:

    var remote_ip_info = {"ret":1,"start":"27.225.168.0","end":"27.225.175.255","country":"\u4e2d\u56fd","province":"\u7518\u8083","city":"\u767d\u94f6","district":"","isp":"\u7535\u4fe1","type":"","desc":""};

    程序原理:

    1.服务器端获取到客户端的ip地址

    2.服务器端将客户端ip地址拼接到ip查询接口上,然后发送一个请求,得到接口返回信息

    3.将接口返回信息输出到<script>标签中,即成为javascript代码。

    4.直接使用remote_ip_info,根据省跳转到不同的界面。

    <% 
    Function getIP() 
        Dim strIPAddr 
        If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then 
            strIPAddr = Request.ServerVariables("REMOTE_ADDR") 
        ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then 
            strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1) 
        ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then 
            strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1) 
        Else 
            strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
        End If 
        getIP = Trim(Mid(strIPAddr, 1, 30)) 
    End Function
    
    
    Function GetHttpPage(url, charset) 
        Dim http 
        Set http = Server.createobject("Msxml2.ServerXMLHTTP")
        http.Open "GET", url, false
        http.Send() 
        If http.readystate<>4 Then
            Exit Function 
        End If 
        GetHttpPage = BytesToStr(http.ResponseBody, charset)
        Set http = Nothing
    End function
    
    
    Function BytesToStr(body, charset)
        Dim objStream
        Set objStream = Server.CreateObject("Adodb.Stream")
        objStream.Type = 1
        objStream.Mode = 3
        objStream.Open
        objStream.Write body
        objStream.Position = 0
        objStream.Type = 2
        objStream.Charset = charset
        BytesToStr = objStream.ReadText 
        objStream.Close
        Set objStream = Nothing
    End Function
    
    dim curIp 
    dim ipInterface
    curIp= getIp() '获取当前客户端ip
    ipInterface="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip="+curIp  '客户端ip查询接口
    %>
    <script type= "text/javascript">
    //省数据:
    //name:省名,
    //code:省编号,暂未用到
    //url:跳转到该省的页面,如果为空,则跳转到默认首页
    //-----------------------------------------------
    var provincesArray =
    [
    {name:"甘肃",code:1,url:"0931/"},
    {name:"江苏",code:2,url:"025/"},
    {name:"山西",code:3,url:"0971/"},
    {name:"新疆",code:4,url:""},
    {name:"青海",code:5,url:""},
    {name:"北京",code:6,url:""},
    {name:"上海",code:7,url:""},
    {name:"黑龙江",code:8,url:""},
    {name:"吉林",code:9,url:""}
    ];
    //--------------------------------------------
    var defaultIndex="home/";//默认首页,用于没有查找到省和没有跳转地址时使用。
    
    <%=GetHttpPage(ipInterface,"GBK")%>
    var curProvince = remote_ip_info.province;
    alert(curProvince);
    for(var i=0;i<provincesArray.length;i++){
        if(provincesArray[i].name.indexOf(curProvince)!=-1){//找到了该ip的省
            if(provincesArray[i].url){//url不为空
                defaultIndex=provincesArray[i].url;
            }
            break;
        };
    }
    window.location.href=defaultIndex;//浏览器跳转到相应界面
    </script>

    原创文章,转载请注明出处。

    也欢迎大家访问我的电影站。

    电影114   http://www.dianying114.cn

  • 相关阅读:
    一:Go编程语言规范--块、声明、作用域
    三:shell运算符
    二:shell之bash变量
    一:Shell基础
    Linux vim(4)
    二:C语言(分之结构)
    一:c语言(数据类型和运算符)
    吐槽一下百度系网站图片的一些问题
    深入理解querySelector(All)
    当fixed元素相互嵌套时chrome下父元素会影响子元素的层叠关系
  • 原文地址:https://www.cnblogs.com/beenupper/p/3035731.html
Copyright © 2011-2022 走看看