macromindonline / geoip
支持 Laravel 4 & 5 的 Geoip 包装器
Requires
- php: >=5.5
- geoip2/geoip2: 2.*
- guzzlehttp/guzzle: ~6
- illuminate/console: ~5
- illuminate/support: ~5
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.*
README
支持 Laravel 4 & 5 的 Geoip 包装器
支持的驱动程序(服务)
要求
- 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_IP、HTTP_X_FORWARDED_FOR、HTTP_X_FORWARDED、HTTP_FORWARDED_FOR、HTTP_FORWARDED、REMOTE_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。