根据客户端IP地址识别ISP

PHP服务器端的程序,只要查询出客户端IP地址归属地以后,就可以在此基础上加以灵活应用。例如,针对来自不同的ISP的访问,返回不同的网页内容。或者根据用户所在的城市,跳转到该城市的地方网站。

这里是一个简单的区分不同的ISP的小程序。节选部分代码:

<?php
//获取当前用户的ip
$ip = get_client_ip(); 
echo "您的IP地址: $ip <br/><br/>";

//查询淘宝的IP地址库
$isp_name = query_ispname_by_taobao($ip);
if ($isp_name == false) {
        // 如果失败,则查询新浪IP地址库
	$isp_name = query_ispname_by_sina($ip);
}

echo "您所属的ISP为:$isp_name <br/>";

if (strpos($isp_name,"联通")  !== false) {
	echo "处理联通用户的请求<br/>";

} else if (strpos($isp_name,"电信") !==false) {
	echo "处理电信用户的请求 <br/>";

} else {
	echo "处理其它ISP用户的请求 <br/>";
}

function query_ispname_by_taobao($ip) {
	// 淘宝IP查询的接口
	$url = "http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
	if ($result = @file_get_contents($url)) {
		$ip_info = json_decode($result);
		if((string)$ip_info->code=='0'){
			$info = $ip_info->data;
			return $info->isp;
		} else {
			// 查询出错
		}

	} else {
		// 接口不可用
	}
	return false;
}

function query_ispname_by_sina($ip) {
	// 新浪IP查询的接口
	$url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=".$ip;
	if ($result = @file_get_contents($url)) {
		$ip_info = json_decode($result);
		return $ip_info->isp;
	} else {
		// 接口不可用
	}
	return false;
}
?>
Share Comments
comments powered by Disqus