技术饭

php解析ip地址的免费纯真IP数据库

copylian    0 评论    398 浏览    2020.08.16

之前使用的tp3的UTFWry.dat作为ip解析,但是感觉这个类有点旧,还比较难用,数据不多,如果需要其他信息还需要重新修改IpLocation.php类,淘宝腾讯提供的免费第三方获取ip的方式不太稳定,所以找了找还是基于qqwry.dat的ip库相对合适。

itbdw/ip-database是免费IP数据库 (纯真IP库,已经格式为国家、省、市、县、运营商),此工具基于纯真 IP 库,并且把非结构化的数据结构化。

一旦识别了 IP,都可以显示国家。国内 ip 都能识别出省,基本可以识别出市、运营商,有部分能识别出县,以及公司小区学校网吧等信息。

环境要求

只需要 php 环境即可本地解析 ip。 不需要网络请求。 第一次查询即读入内存,以后直接从内存读取,效率非常高。

使用说明

composer require 'itbdw/ip-database'

//根据实际情况,基本上用框架(如 Laravel)的话不需要手动引入

//require 'vendor/autoload.php';

use itbdw\Ip\IpLocation;

//支持自定义文件路径

$qqwry_filepath = '/abspath/qqwry.dat';

echo json_encode(IpLocation::getLocation($ip, $qqwry_filepath), JSON_UNESCAPED_UNICODE) . "\n";

echo json_encode(IpLocation::getLocation($ip), JSON_UNESCAPED_UNICODE) . "\n";

使用实例:

    //限制某个地方的ip

    $ip = '192.168.0.1';

    $iplimit_res = $this->limitip($ip, ['河北', '广东', '浙江', '山东', '江苏', '黑龙江', '安徽', '河南', '湖北', '辽宁', '北京', '汕尾']);

    if($iplimit_res == 1){

        //返回数据

        $rdata['code'] = 0;

        $rdata['msg'] = '奖品已抽完';

        return json($rdata);

    }


/**

     * [limitip 限制IP]

     */

    private function limitip($ip = '', $limit_key = ['广东省', '广东', '广州', '汕尾']) {

        //获取IP

        $ip = !empty($ip) ? $ip : $this->request->ip();

        //实例化IP类

        //$iplocation = new \iplocation\IpLocation();

        //获取IP信息

        //$ipdata = $iplocation->getlocation($ip);

        //获取IP信息

        $ipdata = \itbdw\Ip\IpLocation::getLocation($ip);

        //处理,默认结果是0

        $res = 0;

        if(!empty($limit_key) && is_array($limit_key) && isset($ipdata['area']) && isset($ipdata['country'])){

            foreach ($limit_key as $key_ip => $value_ip) {

                //必须是中国并且在范围内

                if(!preg_match('/中国/', $ipdata['country']) || preg_match('/'.$value_ip.'/', $ipdata['area'])){

                    $res = 1;

                    break;

                }

            }

        }

        //返回数据

        return $res;

    }

itbdw/ip-database地址:https://github.com/itbdw/ip-database

ip-database-master.zip

淘宝ip库:http://ip.taobao.com/instructions

1597592701(1).png

据说淘宝ip库不太稳定,比较慢,做简单的功能还好,不适合高并发的。

飓风呀
感谢你的支持,我会继续努力!
扫码打赏,感谢您的支持!
php ip 数据库 

文明上网理性发言!

  • 还没有评论,沙发等你来抢