php或laravel使用maxmind/GeoIP2-php免费判断IP地址定位

Song242 次浏览0个评论2021年06月21日
一、GeoIP2简介 MaxMind成立于2002年,是行业领先的IP情报和在线欺诈检测工具提供商。官网地址maxmind.com;提供免费的IP地址定位服务,定位精准;支持国内国外城市定位。返回国家、城市、经纬度等。 二、Laravel/php使用方法

一、GeoIP2简介

MaxMind 成立于 2002 年,是行业领先的 IP 情报和在线欺诈检测工具提供商。官网地址 maxmind.com;提供免费的IP地址定位服务,定位精准;支持国内国外城市定位。返回国家、城市、经纬度等。

二、Laravel/php使用方法

1、安装官方拓展包

首先安装composer,大家应该都早已安装;这里直接安装拓展包。

composer require geoip2/geoip2:~2.0

2、下载并解压数据库

首先确保您已下载要导入的GeoIP2GeoLite2数据库的最新版本。您可以登录账号免费下载数据库。支持CSV和zip格式。还能导入mysql数据库以及实时更新。具体参考官方文档

maxmind数据集下载

3、使用

城市案例

<?php
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;

// This creates the Reader object, which should be reused across
// lookups.
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');

// Replace "city" with the appropriate method for your database, e.g.,
// "country".
$record = $reader->city('128.101.101.101');

print($record->country->isoCode . "\n"); // 'US'
print($record->country->name . "\n"); // 'United States'
print($record->country->names['zh-CN'] . "\n"); // '美国'

print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'

print($record->city->name . "\n"); // 'Minneapolis'

print($record->postal->code . "\n"); // '55455'

print($record->location->latitude . "\n"); // 44.9733
print($record->location->longitude . "\n"); // -93.2323

print($record->traits->network . "\n"); // '128.101.101.101/32'

匿名 IP 示例

<?php
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;

// This creates the Reader object, which should be reused across
// lookups.
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Anonymous-IP.mmdb');

$record = $reader->anonymousIp('128.101.101.101');

if ($record->isAnonymous) { print "anon\n"; }
print($record->ipAddress . "\n"); // '128.101.101.101'
print($record->network . "\n"); // '128.101.101.101/32'

更多查看官方文档:

GeoIP2 PHP API官方文档

其他解决方案

国内也有一些服务商提供IP定位服务,有时间我写个拓展包即成免费和付费的IP服务,让大家免费的不准确时自动切换付费的。

请登录后评论
    当前暂无评价,快来发表您的观点吧...
    公告提示
    本站主要用于学习交流Laravel技术,分享Laravel优秀案例;同时非常欢迎大家投稿哦!如果有招聘信息也可以联系我我帮忙发布哦!