• ip地址库 新浪,淘宝


    原文连接地址:http://www.9958.pw/post/city_ip

    function getAddressFromIp($ip){
            $urlTaobao = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
            $urlSina = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip;
            $json = file_get_contents($urlTaobao);
            $jsonDecode = json_decode($json);
            if($jsonDecode->code==0){//如果取不到就去取新浪的
                $data['country'] = $jsonDecode->data->country;
                $data['province'] = $jsonDecode->data->region;
                $data['city'] = $jsonDecode->data->city;
                $data['isp'] = $jsonDecode->data->isp;
                return $data;
            }else{
                $json = file_get_contents($urlSina);
                $jsonDecode = json_decode($json);
                $data['country'] = $jsonDecode->country;
                $data['province'] = $jsonDecode->province;
                $data['city'] = $jsonDecode->city;
                $data['isp'] = $jsonDecode->isp;
                $data['district'] = $jsonDecode->district;
                return $data;
            }
        }

    PS:在使用的时候发现,反馈的速度有时候会比较慢,影响了网站速度。

    分开操作

    /**
     * 调用淘宝地址库
     * */
    function ip_taobao($ip){
        $urlTaobao = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
        $json = file_get_contents($urlTaobao);
        $jsonDecode = json_decode($json);
        $data['country'] = $jsonDecode->data->country;
        $data['province'] = $jsonDecode->data->region;
        $data['city'] = $jsonDecode->data->city;
        $data['isp'] = $jsonDecode->data->isp;
        return $data;
    }
    /**
     * 调用新浪地址库
     * */
    function ip_sina($ip){
        $data = '';
        $urlSina = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip;
        $json = file_get_contents($urlSina);
        $jsonDecode = json_decode($json);
        if($jsonDecode == '-2'){
            $data['error'] = '未分配或者内网IP';
        }else{
            $data['country'] = $jsonDecode->country;
            $data['province'] = $jsonDecode->province;
            $data['city'] = $jsonDecode->city;
            $data['isp'] = $jsonDecode->isp;
            $data['district'] = $jsonDecode->district;
        }
        return $data;
    }
    

     调用 

    /**
         * 返回ip所在位置
         * */
        public function ip_address($ip=''){
           if (empty($ip)) $ip = request()->ip();
            $info = Model('site')->info();
            if($info['ip_library'] ==1){
                $arr= ip_taobao($ip);
            }else{
                $arr= ip_sina($ip);
            }
            $address = implode(' ',$arr);
            return $address;
        }

    新的用法

    $ip = Request()->ip();
            $ip_info = ip_sina($ip);
            if($ip_info['country']!='未分配或者内网IP'){
                $address = implode(' ',$ip_info);
            }else{
                $address = '未分配或者内网IP';
            }
            print_r($address);

    最完美的地址库

    /**
     * 调用淘宝地址库
     * */
    function ip_taobao($ip){
        //$ip = '113.87.131.159';
        $opt = [
            'http'=>[
                'method'=>'GET',
                'timeout'=> 5
            ]
        ];
        $context = stream_context_create($opt);
        $urlTaobao = 'http://ip.taobao.com/service/getIpInfo.php?ip='.$ip;
        $json = @file_get_contents($urlTaobao,false,$context);
        $jsonDecode = json_decode($json);
        if($jsonDecode){
            $data['country'] = $jsonDecode->data->country;
            $data['province'] = $jsonDecode->data->region;
            $data['city'] = $jsonDecode->data->city;
            $data['isp'] = $jsonDecode->data->isp;
        }else{
            $data['country'] = '无法连接网络';
        }
        return $data;
    }
    /**
     * 调用新浪地址库
     * */
    function ip_sina($ip){
        //$ip = '113.87.131.159';
        $opt = [
            'http'=>[
                'method'=>'GET',
                'timeout'=> 5
            ]
        ];
        $context = stream_context_create($opt);
        $data = '';
        $urlSina = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$ip;
        $json = @file_get_contents($urlSina,false,$context);
        $jsonDecode = json_decode($json);
        if($jsonDecode){
            if($jsonDecode == '-2'){
                $data['country'] = '未分配或者内网IP';
            }else{
                $data['country'] = $jsonDecode->country;
                $data['province'] = $jsonDecode->province;
                $data['city'] = $jsonDecode->city;
                $data['isp'] = $jsonDecode->isp;
                $data['district'] = $jsonDecode->district;
            }
        }else{
            $data['country'] = '无法连接网络';
        }
        return $data;
    }
  • 相关阅读:
    CentOS Linux下VNC Server远程桌面配置详解
    Java 中的悲观锁和乐观锁的实现
    spring @configuration使用
    MySQL 汉字拼音
    chmod用数字来表示权限的方法
    C语言创建删不掉的目录
    Android小经验
    系统清理——查找大文件
    最全Pycharm教程(42)——Pycharm扩展功能之Emacs外部编辑器
    怎样学习程序
  • 原文地址:https://www.cnblogs.com/wesky/p/6039528.html
Copyright © 2020-2023  润新知