支持 Laravel 4 & 5 的 Geoip 包装器

2.5.0 2017-01-26 08:14 UTC

README

支持 Laravel 4 & 5 的 Geoip 包装器

Build Status Scrutinizer Code Quality Coverage Status License Latest Version Total Downloads

支持的驱动程序(服务

要求

  • PHP >= 5.5

安装

通过 composer 安装 - 编辑你的 composer.json 来添加这个包。

"require": {
    "pulkitjalan/geoip": "2.*"
}

然后在你的终端中运行 composer update 来获取它。

Laravel

有一个 Laravel 服务提供者和外观可用。

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

PulkitJalan\GeoIP\GeoIPServiceProvider::class

接下来将以下内容添加到你的 config/app.php 文件中的 aliases 数组

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

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

需要 Laravel 4 兼容版本吗?

查看 1.0 分支

用法

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

示例

<?php

use PulkitJalan\GeoIP\GeoIP

$geoip = new GeoIP();

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

FreeGeoIP

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

示例

$config = [
    'driver' => 'freegeoip',
    'freegeoip' => [
        'secure' => true,
    ],
];

自定义安装示例

$config = [
    'driver' => 'freegeoip',
    'freegeoip' => [
        'url' => 'freegeoip.example.com', // or with a port (freegeoip.example.com:8080)
        'secure' => true, // or false
    ],
];

IP-API

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

专业示例

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

        // optionally set secure (https) connection (default: false)
        'secure' => true
    ],
];

Maxmind

Maxmind 支持数据库类型和 Web API 类型。

数据库示例

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

Web API 示例

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

Telize

要使用 telize 作为驱动程序,设置配置,以及你的 API 密钥。

示例

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

Laravel

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

可用方法

GeoIP 将尝试按照以下顺序使用以下 HTTP 头来确定 IP:HTTP_CLIENT_IPHTTP_X_FORWARDED_FORHTTP_X_FORWARDEDHTTP_FORWARDED_FORHTTP_FORWARDEDREMOTE_ADDR。你可以使用 setIp 方法来设置它。

$geoip->setIp('127.0.0.1');

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

有几种可用的方法可以提取所需的信息。所有方法在没有数据时都将返回空字符串。

获取纬度

$geoip->getLatitude();

// Laravel
GeoIP::getLatitude();

获取经度

$geoip->getLongitude();

// Laravel
GeoIP::getLongitude();

获取城市

$geoip->getCity();

// Laravel
GeoIP::getCity();

获取国家

$geoip->getCountry();

// Laravel
GeoIP::getCountry();

获取国家代码

$geoip->getCountryCode();

// Laravel
GeoIP::getCountryCode();

获取地区

$geoip->getRegion();

// Laravel
GeoIP::getRegion();

获取地区代码

$geoip->getRegionCode();

// Laravel
GeoIP::getRegionCode();

获取邮政编码

$geoip->getPostalCode();

// Laravel
GeoIP::getPostalCode();

获取时区

$geoip->getTimezone();

// Laravel
GeoIP::getTimezone();

获取 isp(并非所有驱动程序都支持)

$geoip->getIsp();

// Laravel
GeoIP::getIsp();

获取所有地理信息

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

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

获取原始地理信息

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

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

更新数据库

有一个更新命令可用于帮助更新和安装本地 Geoip 数据库。以下命令将下载并安装/更新数据库文件到 /path/to/database.mmdb

<?php

use PulkitJalan\GeoIP\GeoIPUpdater

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

$geoipUpdater = new GeoIPUpdater($config);
$geoipUpdater->update();

Laravel

一旦注册了服务提供者,你可以使用命令 php artisan geoip:update

服务

FreeGeoIP

Freegeoip 是一项免费服务,也可以用来替代数据库文件或付费 Maxmind 服务。它们有一些限制,所以请先查看 网站。你还可以运行一个 自定义安装 并使用它。

IP-API

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

Maxmind

您可以使用MaxMind提供的免费数据库或他们的Web API服务。您可以从这里下载免费数据库服务,或者在配置文件中输入您的用户ID许可证密钥

Telize

Telize提供了JSON IP和GeoIP REST API,允许获取访问者的IP地址并查询任何IP地址的位置信息。它输出JSON编码的IP地理位置数据,并支持跨源资源共享(CORS)和JSONP。