ip2location facebbook  ip2location twitter  ip2location google+ ip2location github

IP2Location Yii Extension - Get geolocation data from IP address

This extension use IP2Location BIN database to lookup visitor geographical location by their IP address. You can easily translate the IP address into country code, country name, region name, city name, latitude & longitude, time zone, usage type and so on.

The extension works well with IP2Location LITE (free database) or IP2Location Database (commercial database). IP2Location database is updated monthly. You can get the latest database from www.ip2location.com (Commercial version) or lite.ip2location.com (Free version).

Download IP2Location Yii Extension (for Yii version 1.x)
For Yii version 2.x, please view the below section for the installation guide.


Installation (version 1.x)
  1. Download the Yii Extension package.
  2. Extract this package to protected/extensions
  3. Download IP2Location free database for LITE version (free) or commercial version.
  4. Add following lines into main.php configuration file:
  5. 'components' => array(
    				'ip2location' => array(
    				'class' => 'application.extensions.ip2location.Geolocation',
    				'database' => 'C:\path\to\ip2location\IP2LOCATION-LITE-DB1.BIN',
    				'mode' => 'FILE_IO',
  6. You're done.


Sample Codes (version 1.x)

Use the following methods to retrieve geolocation information. If $ip not provided, value from CHttpRequest::getUserHostAddress() will be used.

			$countryCode = Yii::app()->ip2location->getCountryCode($ip);
			$countryName = Yii::app()->ip2location->getCountryName($ip);
			$regionName = Yii::app()->ip2location->getRegionName($ip);
			$cityName = Yii::app()->ip2location->getCityName($ip);
			$latitude = Yii::app()->ip2location->getLatitude($ip);
			$longitude = Yii::app()->ip2location->getLongitude($ip);
			$isp = Yii::app()->ip2location->getISP($ip);
			$domainName = Yii::app()->ip2location->getDomainName($ip);
			$zipCode = Yii::app()->ip2location->getZIPCode($ip);
			$timeZone = Yii::app()->ip2location->getTimeZone($ip);
			$netSpeed = Yii::app()->ip2location->getNetSpeed($ip);
			$iddCode = Yii::app()->ip2location->getIDDCode($ip);
			$areaCode = Yii::app()->ip2location->getAreaCode($ip);
			$weatherStationCode = Yii::app()->ip2location->getWeatherStationCode($ip);
			$weatherStationName = Yii::app()->ip2location->getWeatherStationName($ip);
			$mcc = Yii::app()->ip2location->getMCC($ip);
			$mnc = Yii::app()->ip2location->getMNC($ip);
			$mobileCarrierName = Yii::app()->ip2location->getMobileCarrierName($ip);
			$elevation = Yii::app()->ip2location->getElevation($ip);
			$usageType = Yii::app()->ip2location->getUsageType($ip);


Installation (version 2.x)

Inside the Yii 2.0 installation guide, it's recommended to use the composer for the installation. Thefore, in the below tutorials, we assume that you already have the composer installed in your environment.

Install the IP2Location PHP library using composer.

php composer.phar require ip2location/ip2location-php:8.*
Or, add the following line into the require section and execute php composer.phar update
"ip2location/ip2location-php": "8.*"

Sample Codes (version 2.x)

Use the following methods to retrieve geolocation information.

   Cache whole database into system memory and share among other scripts & websites
   WARNING: Please make sure your system have sufficient RAM to enable this feature
// $db = new \IP2Location\Database('path_to/IP-COUNTRY-SAMPLE.BIN', \IP2Location\Database::MEMORY_CACHE);

   Cache the database into memory to accelerate lookup speed
   WARNING: Please make sure your system have sufficient RAM to enable this feature
// $db = new \IP2Location\Database('path_to//IP-COUNTRY-SAMPLE.BIN', \IP2Location\Database::MEMORY_CACHE);

	Default file I/O lookup
$db = new \IP2Location\Database('path_to/IP-COUNTRY-SAMPLE.BIN', \IP2Location\Database::FILE_IO);

$records = $db->lookup('', \IP2Location\Database::ALL);

echo 'IP Number             : ' . $records['ipNumber'] . "\n";
echo 'IP Version            : ' . $records['ipVersion'] . "\n";
echo 'IP Address            : ' . $records['ipAddress'] . "\n";
echo 'Country Code          : ' . $records['countryCode'] . "\n";
echo 'Country Name          : ' . $records['countryName'] . "\n";
echo 'Region Name           : ' . $records['regionName'] . "\n";
echo 'City Name             : ' . $records['cityName'] . "\n";
echo 'Latitude              : ' . $records['latitude'] . "\n";
echo 'Longitude             : ' . $records['longitude'] . "\n";
echo 'Area Code             : ' . $records['areaCode'] . "\n";
echo 'IDD Code              : ' . $records['iddCode'] . "\n";
echo 'Weather Station Code  : ' . $records['weatherStationCode'] . "\n";
echo 'Weather Station Name  : ' . $records['weatherStationName'] . "\n";
echo 'MCC                   : ' . $records['mcc'] . "\n";
echo 'MNC                   : ' . $records['mnc'] . "\n";
echo 'Mobile Carrier        : ' . $records['mobileCarrierName'] . "\n";
echo 'Usage Type            : ' . $records['usageType'] . "\n";
echo 'Elevation             : ' . $records['elevation'] . "\n";
echo 'Net Speed             : ' . $records['netSpeed'] . "\n";
echo 'Time Zone             : ' . $records['timeZone'] . "\n";
echo 'ZIP Code              : ' . $records['zipCode'] . "\n";
echo 'Domain Name           : ' . $records['domainName'] . "\n";
echo 'ISP Name              : ' . $records['isp'] . "\n";
Sample IP2Location Databases (BIN)

The following evaluation copy of the database file has limited range of IP address information compare to commercial. For evaluation purpose, you can query IP addresses from (IPv4) or 2A04:0:0:0:0:0:0:0-2A04:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF (IPv6).

Sample Packages IPv4 IPv6
IP2Location DB1 Sample Bin File670.80 kB350.84 kB
IP2Location DB2 Sample Bin File38.06 MB378.66 kB
IP2Location DB3 Sample Bin File18.30 MB363.65 kB
IP2Location DB4 Sample Bin File53.08 MB388.27 kB
IP2Location DB5 Sample Bin File28.37 MB370.18 kB
IP2Location DB6 Sample Bin File62.81 MB393.44 kB
IP2Location DB7 Sample Bin File59.22 MB398.64 kB
IP2Location DB8 Sample Bin File69.17 MB403.55 kB
IP2Location DB9 Sample Bin File32.88 MB373.45 kB
IP2Location DB10 Sample Bin File74.55 MB408.65 kB
IP2Location DB11 Sample Bin File33.56 MB374.17 kB
IP2Location DB12 Sample Bin File75.00 MB409.59 kB
IP2Location DB13 Sample Bin File32.00 MB371.65 kB
IP2Location DB14 Sample Bin File76.38 MB410.29 kB
IP2Location DB15 Sample Bin File36.45 MB378.07 kB
IP2Location DB16 Sample Bin File81.05 MB415.93 kB
IP2Location DB17 Sample Bin File38.96 MB380.09 kB
IP2Location DB18 Sample Bin File88.02 MB425.95 kB
IP2Location DB19 Sample Bin File71.76 MB404.88 kB
IP2Location DB20 Sample Bin File90.43 MB427.07 kB
IP2Location DB21 Sample Bin File39.79 MB380.72 kB
IP2Location DB22 Sample Bin File94.38 MB430.11 kB
IP2Location DB23 Sample Bin File72.11 MB405.90 kB
IP2Location DB24 Sample Bin File95.22 MB431.79 kB