pulkitjalan/ip-geolocation

支持Laravel的IP地理位置包装器

8.0.0 2024-08-22 05:21 UTC

README

支持Laravel的IP地理位置包装器

Latest Stable Version MIT License Run Tests Coverage Total Downloads

支持的驱动程序(服务

要求

  • PHP >= 8.1

安装

通过composer安装

composer require pulkitjalan/ip-geolocation

Laravel

提供了一个Laravel服务提供者和外观。

将以下内容添加到您的config/app.php文件中的providers数组中

PulkitJalan\IPGeolocation\IPGeolocationServiceProvider::class

然后,将以下内容添加到您的config/app.php文件中的aliases数组中

'IPGeolocation' => PulkitJalan\IPGeolocation\Facades\IPGeolocation::class

然后运行php artisan vendor:publish --provider="PulkitJalan\IPGeolocation\IPGeolocationServiceProvider" --tag="config"来发布配置文件。

使用较旧的PHP / Laravel版本?

如果您正在使用低于8.1的PHP版本或低于9.0的Laravel版本,请使用此包的较旧版本。

用法

ipGeolocation类将配置数组作为第一个参数,或默认使用ip-api驱动程序。

示例

<?php

use PulkitJalan\IPGeolocation\IPGeolocation

$ip = new IPGeolocation();

$lat = $ip->getLatitude(); // 51.5141
$lon = $ip->getLongitude(); // -3.1969

IP-API

要使用ip-api pro服务,您可以在配置中设置选项。

专业示例

$config = [
    'driver' => 'ip-api',
    'ip-api' => [
        'key' => 'YOUR IP-API KEY',
    ],
];

Maxmind数据库

要使用Maxmind数据库作为驱动程序,您可以在配置中设置选项。

数据库示例

$config = [
    'driver' => 'maxmind_database',
    'maxmind_database' => [
        'database' => '/path/to/database.mmdb',
    ],
];

Maxmind API

要使用Maxmind API作为驱动程序,您可以在配置中设置选项。

Web API示例

$config = [
    'driver' => 'maxmind_api',
    'maxmind_api' => [
        'user_id' => 'YOUR MAXMIND USER ID',
        'license_key' => 'YOUR MAXMIND LICENSE KEY'
    ],
];

IPStack

要使用ipstack作为驱动程序,请设置配置。

示例

$config = [
    'driver' => 'ipstack',
    'ipstack' => [
        'key' => 'YOUR IPSTACK KEY',
        'secure' => true, // (optional) use https
    ],
];

Laravel

在Laravel中使用此包,只需更新config/ip-geolocation.php配置文件即可获得相同的效果。可以通过IPGEOLOCATION_DRIVER环境变量设置驱动程序。

可用方法

IPGeolocation将尝试按照以下顺序使用以下http头确定ip:HTTP_CLIENT_IPHTTP_X_FORWARDED_FORHTTP_X_FORWARDEDHTTP_FORWARDED_FORHTTP_FORWARDEDREMOTE_ADDR。可选地,使用setIp方法进行设置。

$ip->setIp('127.0.0.1');

// Laravel
IPGeolocation::setIp('127.0.0.1');

有多个可用方法来提取所需信息。所有方法在数据不可用时都将返回空字符串。

获取纬度

$ip->getLatitude();

// Laravel
IPGeolocation::getLatitude();

获取经度

$ip->getLongitude();

// Laravel
IPGeolocation::getLongitude();

获取城市

$ip->getCity();

// Laravel
IPGeolocation::getCity();

获取国家

$ip->getCountry();

// Laravel
IPGeolocation::getCountry();

获取国家代码

$ip->getCountryCode();

// Laravel
IPGeolocation::getCountryCode();

获取地区

$ip->getRegion();

// Laravel
IPGeolocation::getRegion();

获取地区代码

$ip->getRegionCode();

// Laravel
IPGeolocation::getRegionCode();

获取邮政编码

$ip->getPostalCode();

// Laravel
IPGeolocation::getPostalCode();

获取时区

$ip->getTimezone();

// Laravel
IPGeolocation::getTimezone();

获取isp(不是所有驱动程序都支持)

$ip->getIsp();

// Laravel
IPGeolocation::getIsp();

获取所有地理信息

$ip->get(); // returns array

// Laravel
IPGeolocation::get(); // returns array

获取原始地理信息

$ip->getRaw(); // different drivers will return different data types

// Laravel
IPGeolocation::getRaw(); // different drivers will return different data types

更新数据库

有一个更新命令可用于帮助更新和安装本地IP地理定位数据库。以下内容将下载并安装/更新数据库文件到/path/to/database.mmdb截至2019年12月30日,Maxmind要求用户创建账户并使用许可证密钥下载数据库

<?php

use PulkitJalan\IPGeolocation\IPGeolocationUpdater

$config = [
    'driver' => 'maxmind_database',
    'maxmind_database' => [
        'database' => '/path/to/database.mmdb',
        'license_key' => 'YOUR MAXMIND LICENSE KEY'
    ],
];

(new IPGeolocationUpdater($config))->update();

Laravel

一旦注册了服务提供程序(支持自动发现),您可以使用命令php artisan ip-geolocation:update

服务

IP-API

IP-API是一个免费(或付费)服务,也可以用数据库文件或付费的Maxmind服务代替。它们在免费服务上有限制,所以请先查看文档

Maxmind

您可以使用MaxMind提供的免费数据库(需要许可证密钥)或他们的Web API服务。您可以在这里注册并获取免费许可证代码。