ip2location / codeigniter-ip2location
CodeIgniter的IP2Location库。使用IP2Location地理位置数据库查询国家、地区、城市、坐标、邮编、时区、ISP、域名、连接类型、区号、天气、MCC、MNC、手机品牌名称、海拔、使用类型、IP地址类型和IAB广告类别。
1.4.0
2022-07-04 08:51 UTC
Requires (Dev)
- phpunit/phpunit: ^9
README
此模块允许用户从IP地址检索以下地理位置信息。它支持IPv4和IPv6地址。
- 国家
- 地区
- 城市
- 纬度 & 经度
- 邮编
- 时区
- 区号
- 网速
- ISP
- 域名
- 手机信息
- 气象站信息
- 海拔
- 使用类型
- 地址类型
- 类别
安装
将 controllers
和 libraries
上传到CodeIgniter application
文件夹。
使用
此模块可以从BIN数据库或网络服务查询IP地址信息。本节将解释如何使用此扩展从BIN数据库和网络服务查询。
项目中的示例代码位于 controllers 文件夹下。您可以通过使用 <your_domain>/index.php/ip2location_test 来运行示例代码。
BIN数据库
在您的应用程序中使用以下代码获取地理位置信息。
// (optional) Define IP2Location database path. By default, the IP2LOCATION_DATABASE is pointed to *application/libraries/ip2location/IP2LOCATION-DB.BIN* if you choose not to change the original settings.
define('IP2LOCATION_DATABASE', '/path/to/ip2location/database');
$ipl = new IP2Location_lib();
$countryCode = $ipl->getCountryCode('8.8.8.8');
以下是对BIN数据文件查找支持的方法。
$countryCode = $ipl->getCountryCode($ip);
$countryName = $ipl->getCountryName($ip);
$regionName = $ipl->getRegionName($ip);
$cityName = $ipl->getCityName($ip);
$latitude = $ipl->getLatitude($ip);
$longitude = $ipl->getLongitude($ip);
$isp = $ipl->getISP($ip);
$domainName = $ipl->getDomainName($ip);
$zipCode = $ipl->getZIPCode($ip);
$timeZone = $ipl->getTimeZone($ip);
$netSpeed = $ipl->getNetSpeed($ip);
$iddCode = $ipl->getIDDCode($ip);
$areaCode = $ipl->getAreaCode($ip);
$weatherStationCode = $ipl->getWeatherStationCode($ip);
$weatherStationName = $ipl->getWeatherStationName($ip);
$mcc = $ipl->getMCC($ip);
$mnc = $ipl->getMNC($ip);
$mobileCarrierName = $ipl->getMobileCarrierName($ip);
$elevation = $ipl->getElevation($ip);
$usageType = $ipl->getUsageType($ip);
$addressType = $ipl->getAddressType($ip);
$category = $ipl->getCategory($ip);
网络服务
在您的应用程序中使用以下代码获取地理位置信息。
// (required) Define IP2Location API key.
define('IP2LOCATION_API_KEY', 'your_api_key');
// (required) Define IP2Location Web service package of different granularity of return information.
define('IP2LOCATION_PACKAGE', 'WS1');
// (optional) Define to use https or http.
define('IP2LOCATION_USESSL', false);
// (optional) Define extra information in addition to the above-selected package. Refer to https://www.ip2location.com/web-service/ip2location for the list of available addons.
define('IP2LOCATION_ADDONS', []);
// (optional) Define Translation information. Refer to https://www.ip2location.com/web-service/ip2location for available languages.
define('IP2LOCATION_LANGUAGE', 'zh-cn');
$ipl = new IP2Location_lib();
print_r ($ipl->getWebService('8.8.8.8'));
IPTools
在您的应用程序中使用以下代码获取IPTools类信息。
$ipl = new IP2Location_lib();
var_dump($ipl->isIpv4('8.8.8.8'));echo '<br>';
var_dump($ipl->isIpv6('2001:4860:4860::8888'));echo '<br>';
print_r($ipl->ipv4ToDecimal('8.8.8.8'));echo '<br>';
print_r($ipl->decimalToIpv4(134744072));echo '<br>';
print_r($ipl->ipv6ToDecimal('2001:4860:4860::8888'));echo '<br>';
print_r($ipl->decimalToIpv6('42541956123769884636017138956568135816'));echo '<br>';
print_r($ipl->ipv4ToCidr('8.0.0.0', '8.255.255.255'));echo '<br>';
print_r($ipl->cidrToIpv4('8.0.0.0/8'));echo '<br>';
print_r($ipl->ipv6ToCidr('2002:0000:0000:1234:abcd:ffff:c0a8:0000', '2002:0000:0000:1234:ffff:ffff:ffff:ffff'));echo '<br>';
print_r($ipl->cidrToIpv6('2002::1234:abcd:ffff:c0a8:101/64'));echo '<br>';
print_r($ipl->compressIpv6('2002:0000:0000:1234:FFFF:FFFF:FFFF:FFFF'));echo '<br>';
print_r($ipl->expandIpv6('2002::1234:FFFF:FFFF:FFFF:FFFF'));echo '<br>';
依赖项
此模块需要IP2Location BIN数据文件或IP2Location API密钥才能运行。您可以在以下位置下载BIN数据文件:
- IP2Location LITE BIN数据(免费):https://lite.ip2location.com
- IP2Location商业BIN数据(全面):https://www.ip2location.com
此版本提供了一份过时的BIN数据库供您测试。建议您访问上述链接下载最新的BIN数据库。
对于BIN数据库更新,只需将下载的BIN数据库重命名为 IP2LOCATION-DB.BIN 并替换 application/libraries/ip2location/ 中的副本(如果您未更改使用部分中描述的默认IP2LOCATION_DATABASE常量)。
您还可以注册 IP2Location Web Service 以获取一个免费的API密钥。
IPv4 BIN vs IPv6 BIN
- 如果您只需查询IPv4地址,请使用IPv4 BIN文件。
- 如果您需要查询IPv4和IPv6地址,请使用IPv6 BIN文件。