reefki / laravel-geoip
Laravel 包,用于获取 IP 地址的地理位置。
v1.0.0
2023-10-08 22:14 UTC
Requires
- eventsauce/object-hydrator: ^1.4
- guzzlehttp/guzzle: ^7.0
- illuminate/http: ^9.0|^10.0
- illuminate/support: ^9.0|^10.0
- symfony/http-foundation: ^6.3
Requires (Dev)
- laravel/pint: ^1.13
- orchestra/testbench: ^7.0|^8.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
README
Laravel 包,用于获取 IP 地址的地理位置。
安装
此包可以通过 Composer 安装。
composer require reefki/laravel-geoip
可选地,您可以使用以下命令发布此包的配置文件
php artisan vendor:publish --provider="Reefki\Geoip\GeoipServiceProvider" --tag="config"
基本用法
使用外观获取 IP 地址信息
use Reefki\Geoip\Geoip; $geoip = Geoip::get('8.8.8.8'); // Or $geoip = Geoip::get('2001:4860:4860:0:0:0:0:8888'); $geoip->driver; // geojs. $geoip->ip; // 8.8.8.8 $geoip->city; // Mountain View $geoip->region; // California $geoip->country; // United States $geoip->country_code; // US $geoip->continent_code; // NA $geoip->timezone; // America/Chicago $geoip->latitude; // 37.751 $geoip->longitude; // -97.822 $geoip->cached; // true or false
默认情况下,结果将被缓存,要获取实时数据,可以将布尔值作为第二个参数传递
use Reefki\Geoip\Geoip; Geoip::get('8.8.8.8', false);
通过请求获取访客的 IP 地址
$geoip = $request->geoip(anonymize: true, cache: true);
获取访客的匿名 IP 地址
// 8.8.8.8 = 8.8.8.0 // 2001:4860:4860:0:0:0:0:8888 = 2001:4860:4860:: $anonymizedIp = $request->anonymizedIp();
驱动程序
Laravel GeoIP 支持多个驱动程序。默认情况下,如果您在调用外观或通过 Laravel 请求实例调用 geoip()
方法时未指定驱动程序,将使用 geojs
驱动程序。
您可以在 .env
文件中更改默认驱动程序,如下所示
GEOIP_DEFAULT_DRIVER=geojs
以下是当前可用的驱动程序。
GeoJS
这是一个完全免费的服务,您无需做任何事情就可以使其工作。只需将 geojs
传递给驱动程序参数。
use Reefki\Geoip\Geoip; Geoip::driver('geojs')->get('8.8.8.8');
IPData
要使用此驱动程序,请 注册 账户并将 API 密钥放在您的 .env
文件中,如下所示
IPDATA_API_KEY=YOUR_API_KEY
要使用此驱动程序获取 IP 信息,您可以将 ip-data
传递给驱动程序参数
use Reefki\Geoip\Geoip; Geoip::driver('ip-data')->get('8.8.8.8');
请注意:IPData 提供 1500 次每日免费请求。如果您的每日使用量超过 1500,则需要升级到他们的付费计划之一。
测试
使用以下命令运行测试
vendor/bin/phpunit
致谢
许可
MIT 许可证(MIT)。有关更多信息,请参阅 许可文件。