PHP实现通过geoip获取IP地理信息

如果想获取到用户的地理信息可以通过geoip来实现,或者第三方接口,下面是geoip库的实现方式

geoip是通过来访者的IP,定位他的经纬度,国家/地区,省市,甚至街道等位置信息

torann/geoip 是为 Laravel 定制的获取 IP 地理信息的扩展包

如果你想利用高德的api获取一些地理信息的话点击:juejin.im/post/684490…

1. 安装

1). 使用 composer 安装:

composer require torann/geoip复制代码

2). 修改 config/app 文件,在 providers 数组内追加如下内容:

'providers' => [
  ...
  'Torann\GeoIP\GeoIPServiceProvider',
],复制代码

3). 修改 config/app 文件,在 aliases 数组内追加如下内容:

'aliases' => [
  ...
  'GeoIP' => 'Torann\GeoIP\GeoIP',
],复制代码

4). 生成配置文件

 php artisan vendor:publish复制代码

配置文件生成之后,可以在 config/geoip.php 进行修改

5). 更新 IP 地址库

php artisan geoip:update复制代码
  • 经过调试发现无法连接ip-api.com接口。 将config/geoip.php中的 'service' => 'ipapi'修改成 'service' => 'maxmind_database' 使用本地数据库进行查询。(同时关闭了cache 功能 'cache' => 'none')
  • 重新更新本地 数据库 执行 php artisan geoip:update
  • maxmid_database需要require geoip2/geoip2:~2.0 支持,因此安装 composer require geoip2/geoip2:~2.0
  • 报错信息:This cache store does not support tagging
  • 修改你的 .env 文件,将缓存配置修改成 redis 即可   (我主要出现修改了这里 就好了)

2. 基础用法

获取当前服务器 IP 对应的地理位置信息

use Torann\GeoIP\Facades\GeoIP;

$ip = $request->ip();
$location = GeoIP::getLocation($ip)->toArray();复制代码

获取 IP: 232.223.11.11 对应的地理位置信息

$location = GeoIP::getLocation('222.128.24.20')->toArray();复制代码

结果如下:

array:13 [
  "ip" => "222.128.24.20"
  "iso_code" => "CN"
  "country" => "China"
  "city" => "Beijing"
  "state" => "BJ"
  "state_name" => "Beijing"
  "postal_code" => null
  "lat" => 39.9288
  "lon" => 116.3889
  "timezone" => "Asia/Shanghai"
  "continent" => "AS"
  "currency" => "CNY"
  "default" => false
]



参考链接:https://juejin.cn/post/6844903872410943501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值