• 根据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

  • 相关阅读:
    centos7-关闭 rpcbind 服务
    nginx进行获取阿里云slb真实ip配置操作
    rsync同步时,删除目标目录比源目录多余文件的方法(--delete)
    nfs安装
    Selenium+PhantomJS使用时报错原因及解决方案
    python json转对象 指定字段名称
    大地坐标系和空间直角坐标系的转换
    python日志输出的内容修改为json格式
    Java String的intern方法
    python 超时重试的方法 signal手段
  • 原文地址:https://www.cnblogs.com/beenupper/p/3035731.html
Copyright © 2020-2023  润新知