sourcebroker / ip2geo
基于IP返回地理数据 - 使用Maxmind数据库(免费/商业版)
Requires
- geoip2/geoip2: ~2.9
- typo3/cms-core: ^8.7 || ^9.5
- typo3/cms-scheduler: ^8.7 || ^9.5
Replaces
- typo3-ter/ip2geo: 1.0.1
This package is auto-updated.
Last update: 2024-09-06 20:41:17 UTC
README
它做什么?
此扩展提供调度器任务以下载maxmind数据库(免费或商业版)和一些用于获取国家、大洲等有趣内容的类方法。
如何安装?
使用composer安装
composer require sourcebroker/ip2geo
转到调度器模块并添加新任务"下载地理位置数据库"
添加调度器任务时需要两个参数
数据库名称
。这可以是一个任意字符串。例如:"freeCountry","commercialCountry"。此名称将在php代码中稍后使用,如GeoIp::getInstance('freeCountry')
。下载URL
。Maxmind数据库下载链接。- 对于国家轻量数据库,URL是:https://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz
- 对于城市轻量数据库,URL是:https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz
- 如果上述链接无法工作,以下是maxmind列出了数据库的页面:https://dev.maxmind.com/geoip/geoip2/geolite2/
运行调度器并检查文件夹
/uploads/tx_ip2geo/
。数据库应下载到该文件夹。
如何使用?
在您的代码中,使用以下调用获取数据
对于国家数据库
$countryCode = GeoIp::getInstance('freeCountry')->getCountryCode(); // assuming you named database with "freeCountry" in scheduler task
对于IP 83.97.23.149,您将获得"DE"作为响应
对于城市数据库
$locationData = GeoIp::getInstance('freeCity')->getLocation(); // assuming you named database with "freeCity" in scheduler task
对于IP 83.97.23.149,您将获得以下数据作为响应
Array ( [continentCode] => EU [countryCode] => DE [countryName] => Germany [city] => Berlin [postalCode] => 10178 [latitude] => 52.5196 [longitude] => 13.4069 )
附加选项
您可以在$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['ip2geo']
中为此扩展设置一些选项。您可以使用typo3conf/LocalConfiguration
文件来存储这些值。
defaultLocalIP
对于本地开发,您的IP通常是127.0.0.1,而这个IP当然不在Maxmind数据库中。在这种情况下,Maxmind API将返回"The address 127.0.0.1 is not in the database."。您可以通过设置默认IP来解决这种情况,如果检测到的IP是127.0.0.1。例如配置'EXTCONF' => [ 'ip2geo' => [ 'defaultLocalIP' => '83.97.23.149', ], ],
fakeIpHeaderName
这是您可以用来覆盖IP值的头名称。此值必须是唯一的,这样除了您之外没有人可以覆盖IP。提示:一个设置头的不错Chrome扩展是"ModHeader"。例如'EXTCONF' => [ 'ip2geo' => [ 'fakeIpHeaderName' => 'myFakeIpHeader1991718263162831', ], ],
fakeIpHeaderName
在设置时具有优先级高于defaultLocalIP
。
变更日志
查看https://github.com/sourcebroker/ip2geo/blob/master/CHANGELOG.rst