// 数据库
var database = {
'123.123.123.123': {
province: '北京市',
city: '北京市',
operators: '联通',
},
'123.123.123.124': {
province: '北京市',
city: '北京市',
operators: '联通',
}
// ...
}
// 主函数
var inquireIP = function (ip) {
if(database[ip]) {
return database[ip]
}else{
console.log('找不到ip:' + ip)
return null
}
}
// 调用
var ipData = inquireIP('123.123.123.123')
这样子这个js文件会很大,也可以调用API的形式,为方便下面js代码使用了jquery
// 主函数
var inquireIP = function (ip, callback) {
$.ajax({
url: '你的API接口地址',
type: 'GET',
dataType: 'jsonp',
data: {ip: ip}
})
.done(function(data) {
callback(data)
})
}
// 调用
inquireIP('123.123.123.123', function (data) {
console.log(data)
})
这样子就可以在服务端处理,当然提前你得有服务器,并搭建一个查询ip的API接口
不建议使用js进行这个处理,你这样做的话完整过程为
1. 用户访问php页面
2. 服务端输出html
3. 浏览器运行js检查ip所属区域
4. ajax方式提交区域信息给服务器
5. 服务器返回查询结果
6. js将查询结果显示到当前页面
你想想这要多长时间。因此最好是php端直接判断区域,然后直接查询并输出就行了。
提供一个php写的函数,如果有用望采纳
function getCityByUserIp() {$ip = false
if (isset($_SERVER)){
if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"]
} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
$ip = $_SERVER["HTTP_CLIENT_IP"]
} else {
$ip = $_SERVER["REMOTE_ADDR"]
}
} else {
if (getenv("HTTP_X_FORWARDED_FOR")){
$ip = getenv("HTTP_X_FORWARDED_FOR")
} else if (getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP")
} else {
$ip = getenv("REMOTE_ADDR")
}
}
if (false === $ip) {
return false
}
$file = fopen('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip, 'r')
$content = fread($file, 1024)
fclose($file)
if (! preg_match("/^var remote_ip_info = (\\{[^\\}]+\\})$/", $content, $_match)) {
return false
}
$ipInfo = json_decode($_match[1])
return $ipInfo
}
返回的数组中包括 country, province, city等,如果返回false表示无法获得ip或该ip没有在大陆地区匹配的记录(港澳台似乎有province,但是没有city)。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>js判断客户端ip地址跳转</title>
<meta name="keywords" content="" />
<meta name="description" content="" />
<script src="http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js"></script>
</head>
<body>
<script>
if(remote_ip_info.province != "广东"){
location.href="http://a.com"
}else{
location.href="http://b.com"
}
</script>
</body>
</html>
【摘自百度经验】