ip2location / ip2location-codeigniter4
适用于CodeIgniter 4的IP2Location库。使用IP2Location地理位置数据库查找国家、地区、城市、坐标、邮编、时区、ISP、域名、连接类型、区号、天气、MCC、MNC、手机品牌名称、海拔、使用类型、IP地址类型和IAB广告类别。
Requires (Dev)
- phpunit/phpunit: ^9
README
此模块允许用户从IP地址检索以下地理位置信息。它支持IPv4和IPv6地址。
- 国家
- 地区
- 城市
- 纬度 & 经度
- 邮编
- 时区
- 区号
- 网络速度
- ISP
- 域名
- 手机信息
- 气象站信息
- 海拔
- 使用类型
- 地址类型
- 类别
此库仅适用于CodeIgniter 4。对于CodeIgniter 3,您可以从这里获取。
安装
将Controllers
、Libraries
和Models
上传到CodeIgniter app
文件夹。
使用方法
此模块能够从BIN数据库或Web服务查询IP地址信息。本节将解释如何使用此扩展从BIN数据库和Web服务进行查询。
此项目在Controllers文件夹中提供了示例代码。将以下行添加到app\Config\Routes.php文件后,您可以使用<your_domain>/index.php/ip2location_test运行示例代码。
$routes->get('ip2location_test', 'IP2Location_test::index');
BIN数据库
在您的应用程序中使用以下代码以获取地理位置信息。
// (optional) Define IP2Location database path. By default, the IP2LOCATION_DATABASE is pointed to *app/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);
Web服务
在您的应用程序中使用以下代码以获取地理位置信息。
// (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'));
要使用IP2Location.io API获取地理位置信息,您可以使用以下代码
// (required) Define IP2Location.io API key. define('IP2LOCATION_IO_API_KEY', 'your_api_key'); // (optional) Define Translation information. Refer to https://www.ip2location.io/ip2location-documentation for available languages. define('IP2LOCATION_IO_LANGUAGE', 'zh-cn'); $ipl = new IP2Location_lib(); print_r ($ipl->getWebService('8.8.8.8'));
MySQL查询
在您的应用程序中使用以下代码以获取地理位置信息。
define('IP2LOCATION_DATABASE_TABLE', 'ip2location_table_name'); $db = model('IP2Location_model', false); print_r ($db->lookup('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并替换app/Libraries/IP2Location/中的副本(如果您未更改用法部分中描述的默认IP2LOCATION_DATABASE常量)。
您还可以注册IP2Location Web Service或IP2Location.io IP GEOLOCATION API以获取一个免费API密钥。
IPv4 BIN与IPv6 BIN
- 如果您只需要查询IPv4地址,请使用IPv4 BIN文件。
- 如果您需要查询IPv4和IPv6地址,请使用IPv6 BIN文件。