有关查询IP地址所在地的问题
手里有个任务,需要用到查询IP地址所在地的问题。
难是不难,网上有好多各大网站的IP所在地的查询接口,拿来就能用。
我先用的马老板的接口,如下:
<?php
function get_location(){
//腾讯的接口太坑爹,它判断的是服务器的IP
$ip=file_get_contents("http://fw.qq.com/ipaddress");
$ip=iconv(´GB2312´, ´UTF-8´, $ip); //将字符串的编码从GB2312转到UTF-8
$s=array(´var IPData = new Array(´,´"´,´)´,´;´);
$r=array(´´,´´,´´,´´);
$ip=str_replace($s,$r,$ip);
$ip=explode(´,´,$ip);
return array(´ip´=>$ip[0],´province´=>trim($ip[2]),´city´=>trim($ip[3]));
}
在开发环境下是没有问题的,但是传到服务器上以后问题就出来了,因为它判断的是服务器的IP,而不是浏览器客户端的IP。。。
郁闷,换新浪的吧,要说新浪还是比较厚道的,提供了多种模式,我这里用的JSON
<?php
function get_location(){
$clientIp = get_ip(); //这个功能自己实现
$ip=file_get_contents(´http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=´.$clientIp);
$ip = json_decode($ip);
return array(´ip´=>$clientIp,´province´=>trim($ip->province),´city´=>trim($ip->city));
}