larva / laravel-geoip2
This is a geoip2.
1.0.0
2023-09-24 10:51 UTC
Requires
- php: ^8.0
- ext-json: *
- geoip2/geoip2: ^2.0
- illuminate/support: ^9.0 || ^10.0
This package is auto-updated.
Last update: 2024-12-05 10:38:14 UTC
README
Laravel 的 geoip2 位置查询模块
简介
- 该插件自带ip本地库,存放于
/database
; 最后更新时间:2023-08-10 (空了就时不时更新一下) laravel-geoip2
是基于geoip2
作为底层,依托mmdb数据库
查询ip归属地及asn信息- 本项目基于geoip2/geoip2,感谢MaxMind 工作组的开源
- 本项目基于workbunny/webman-ip-attribution,感谢workbunny 的开源
安装
composer require larva/laravel-geoip2
使用
配置
在 Laravel 中使用
注:配置可选填
return [ 'enable' => true, 'default' => '--', // 缺省展示值 'language' => ['zh-CN'], // 语言 'db-country' => null, // 自定义的country库绝对地址 'db-city' => null, // 自定义的city库绝对地址 'db-asn' => null, // 自定义的asn库绝对地址 ];
快速获取
use Larva\GeoIp2\GeoIp2; use Larva\GeoIp2\InvalidArgumentException; try { var_dump(GeoIp2::getLocation('8.8.8.8')); // ipv4 var_dump(GeoIp2::getLocation('::0808:0808')); // ipv6 // [ // 'country' => 'United States', // 'city' => '--', // 'asn' => 'GOOGLE', // 'continent' => 'North America', // 'timezone' => 'America/Chicago', // ] }catch (InvalidArgumentException $exception){ }
使用city库查询
注:City库包含了 大洲、国家、城市,但不包含网络运营商等相关信息
use Larva\GeoIp2\GeoIp2; use Larva\GeoIp2\InvalidArgumentException; try { var_dump(GeoIp2::city('8.8.8.8')); // ipv4 var_dump(GeoIp2::city('::0808:0808')); // ipv6 // 返回 GeoIp2\Model\City 对象 }catch (IpAttributionException $exception){ }
使用country库查询
注:Country库不包含城市及网络运营商等信息,通常使用City库即可,Country存在的意义在于较于City更轻
use Larva\GeoIp2\GeoIp2; use Larva\GeoIp2\InvalidArgumentException; try { var_dump(GeoIp2::country('8.8.8.8')); // ipv4 var_dump(GeoIp2::country('::0808:0808')); // ipv6 // 返回 GeoIp2\Model\Country 对象 }catch (IpAttributionException $exception){ }
使用asn库查询
注:Asn库仅包含网络运营商等相关信息
use Larva\GeoIp2\GeoIp2; use Larva\GeoIp2\InvalidArgumentException; try { var_dump(GeoIp2::asn('8.8.8.8')); // ipv4 var_dump(GeoIp2::asn('::0808:0808')); // ipv6 // 返回 GeoIp2\Model\Asn 对象 }catch (IpAttributionException $exception){ }
使用原始Reader操作
注:原始Reader可以直接使用 geoip2/geoip2 提供的方法操作相关的库
use Larva\GeoIp2\GeoIp2; use Larva\GeoIp2\GeoIp2Manager; use Larva\GeoIp2\InvalidArgumentException; var_dump(GeoIp2::createReader(GeoIp2Manager::DB_CITY)); // City库 // 返回连接City库的 GeoIp2\Database\Reader 对象 var_dump(GeoIp2::createReader(GeoIp2Manager::DB_ASN)); // ASN库 // 返回连接ASN库的 GeoIp2\Database\Reader 对象 var_dump(GeoIp2::createReader(GeoIp2Manager::DB_ASN)); // Country库 // 返回连接Country库的 GeoIp2\Database\Reader 对象
更多用法和示例参照 geoip2/geoip2;