PHP實現通過geoip獲取IP地理信息
如果想獲取到用戶的地理信息可以通過geoip來實現,或者第三方介面,下面是geoip庫的實現方式
geoip是通過來訪者的IP,定位他的經緯度,國家/地區,省市,甚至街道等位置信息
torann/geoip 是為 Laravel 定製的獲取 IP 地理信息的擴展包
如果你想利用高德的api獲取一些地理信息的話點擊:https://blog.csdn.net/qq175023117/article/details/85070396
1. 安裝
1). 使用 composer 安裝:
composer require torann/geoip
2). 修改 config/app 文件,在 providers 數組內追加如下內容:
"providers" => [
...
"TorannGeoIPGeoIPServiceProvider",
],
3). 修改 config/app 文件,在 aliases 數組內追加如下內容:
"aliases" => [
...
"GeoIP" => "TorannGeoIPGeoIP",
],
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 TorannGeoIPFacadesGeoIP;
$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://blog.csdn.net/qq175023117/article/details/85091674
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


※random.shuffle()的使用注意事項
※解讀gcc和g++編譯器分別對c與c++文件影響
TAG:程序員小新人學習 |