导航

根据ip地址跳转到不同的省市

Posted on 2013-04-22 16:19  曙光城邦  阅读(618)  评论(0编辑  收藏  举报

这个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