>Info: Due to file size limitations I cannot upload the package here. For download-ables check out the github project page.
This extension provides the Maxmind GeoLite City package to Yii users.
- Latest Maxmind Geo City Lite is included. No need to install anything else aside from this Yii extension.
- Information retrieved includes the following properties of an IP address (all, some or none - depending on the info found by Maxmind):
- Provides a modern method to determine the current remote IP address ($_SERVER['REMOTE_ADDR'] is hardly the only check you'll need. Visit getRemoteIpAddress() method for more details).
- Provides a method to determine if IP address is "publicly route-able", meaning not an internal network address or a reserved address (IPv6 supported).
- Provides a method to tell if a given IP address is valid or not (IPv6 supported).
- Easy procedure for future update of the binary DB file.
- This extension uses PHP's Filter extension. Your PHP environment should include this extension. If you're using a PHP of version v5.2 or newer than Filter was built into PHP from that version on, so you're safe. To verify, run a simple phpinfo() on your server.
- Tested on Yii v1.1.10, but should work with older versions.
- Recommended usage as a 'Yii component'. Note that altough loaded as a component, only for Maxmind involving activity the Maxmind client and DB will be used (better for performance reasons).
- To setup as a component, add the following code to your main.php config file:
'components' => array( //... 'geoip' => array( 'class' => 'ext.PcMaxmindGeoIp.PcMaxmindGeoIp', ), //...
You can use another binary DB file by supplying the following parameter to the configuration above (right below the 'class' element): 'dbFilename' => '[db filename]'. Be sure to use relative path only and put the actual file under extensions/PcMaxmindGeoIp/maxmind/ directory.
- Typically, at some point in your code you'll do:
$ip = Yii::app()->geoip->getRemoteIpAddress(); $address_information = Yii::app()->geoip->getCityInfoForIp($ip); // at this stage $address_information is an array with element keys as noted // in the "Features" section above, with values that fetched from Maxmind or false // if none found.
- A few other auxiliary method are provided to complete the functionality:
- getRemoteIpAddress(): Returns the valid IP address of the current user.
- isPubliclyRoutableIpAddress(): Tells whether the given IP address is a 'public' IP and is routable, meaning not internal network (10.0.0.0/8...) or belonging to some reserved range.
- isValidIpAddress(): Tells whether the given IP address is a valid IPv4 or IPv6 address.
- convertDecimalToSexagesimal(): easy conversion of location address from decimal to sexagesimal notations.
Update of Maxmind DB ¶
- Maxmind provides monthly updates for their GeoLite City DB.
- This update can be fetched automatically and efficiently using a cron job. See the wget example on this page
Change Log ¶
- v1.0 (14 Nov 2012): Adding convertDecimalToSexagesimal() for easy conversion of location address syntax from decimal to sexagesimal notation.