Revision History for PHP Module for IP2Location Please refer https://github.com/chrislim2888/IP2Location-PHP-Module/releases to future updates. 8.2.1 Tue Mar 24 17:29:00 2020 * Fixes - Fixed getCidr() function to return an array of subnet. 8.2.0 Thu Mar 19 10:16:00 2020 * Fixes - Added IP2Location web service lookup. 8.1.1 Wed Oct 09 08:58:00 2019 * Fixes - Reduce file I/O to improve query performance. 8.1.0 Mon Sep 30 08:58:00 2019 * Fixes - Optimized library performance. 8.0.2 Sun Oct 1 10:01:00 2016 * Fixes - Issue of shift operator for big number in php 8.0.1 Tue Aug 1 11:00:00 2016 * Fixes - Support 2 new interfaces: getDatabaseVersion and getModuleVersion 8.0.0 Tue Jul 5 10:00:00 2016 * Fixes - Add code to lookup for index section which available in new BIN format 7.2.5 Fri Jun 10 15:40:23 2016 * Fixes: - Fix the IP lookup issue for DB24 7.2.4 Wed Jan 06 14:44:23 2016 * Fixes: - Fixed IPv6 lookup issue. 7.2.3 Wed Aug 12 10:29:37 2015 * Fixes: - Fix IPv4 lookup issue. 7.2.2 Thu Jul 30 10:27:55 2015 * Fixes: - Defended against 32 bit overflow in a couple more places. - Added checks for default / unset / infinite memory limits. - Fixed lookup function, in order for it to consistently return the correct datatype. * Enhancements: - Cached the result of the memory limit calculation in order not to recheck it for each instantiation. * Additions: - Added exception code constants to ease the handling of exceptional conditions in the client. - Added the ability to set default returned fields on construction, in order not to have to pass them around constantly. 7.2.0 Wed Jul 29 14:07:23 2015 **Special thanks to Mariano (mariano.perez.rodriguez [at] gmail.com) for working on this release** * Removals: - Removed IP2LocationRecord class, it served little purpose and an array response would be much more flexible (see below). - Removed everything to do with endianness (there was some leftover code and constants). - Removed IP version constants, they were unused. - Removed the SHM_KEY constant in favor of a dynamic shared memory key calculation. - Removed "$database" property in favor of a set of IP-version-directed metadata properties. - Removed useless caching of lookup results in "$result" property. - Removed closing PHP tag. * Fixes: - Fixed possible overruns of the binary file by only reading as much as needed and not more. - Fixed IPv6 lookup (it was never going to work: you were trying to compare a number to a BCMath string). - Fixed binary search midpoint calculation. - Fixed shared memory permissions so as not to leak information to other users / groups. - Gave a unique number to each numeric class constant to prevent accidental misuse. * Enhancements: - Automatically determine float size (this is not optimal, but as good as we're going to get). - Removed "magic numbers" as much as possible and factored them out to class constants. - IP address, version, and number are now selectable fields. - The "$columns" array has been made static, no need for a copy for each possible instance. - The "$columns" array has been reindexed with integer keys to avoid double lookup during binary search. - The "$columns" array has had its entries multiplied by 4, in order to avoid repeatedly multiplying by 4 every time its values were going to be used. - The memory buffer has been made static (this way, if two instances are created they can share the buffer instead of using up twice as much memory for the same data). - Internal variable handling has been simplified with a single "$resource" property whose meaning changes as the caching method changes. - The class constructor will now accept an empty filename, in this case, it will look for the most general database BIN in the file's directory and load that. - Quadwords and IPv6 addresses are now parsed by a simple and highly portable routine. - Low level reading abstracting away from the caching method has been implemented as a private method (this simplifies the low-level reading functions tremendously). - Strings are now read by providing just a pointer to the word value describing its start: the length is automatically retrieved and only the necessary bytes are read (preventing overrun errors). - Low level read routines have been greatly simplified. - High level read routines have been added, specifically, those providing related fields have been grouped together. - Binary search has been decoupled from field lookup (cleaning up the implementation). - Binary search will now work correctly with IPv6 addresses. * Additions: - Added "FIELD_NOT_KNOWN" to manage unknown field requests. - Added "multiple" fields (eg. "COORDINATES" in order to get latitude and longitude at the same time). - Added the "Ip2Location" namespace, and changed the class' name to "Database", so we now have "Ip2Location\Database", accordingly, the filename has been changed to "Database.php", this should be put in a directory named "Ip2Location" in order to comply with PSR-0 / PSR-4. - A destructor has been added to properly detach from shared memory / close opened files. - A static method has been added to tear down the shared memory segments created by the class (otherwise, it's a pain to delete them). - Added a "getDate()" method, this will provide the database's compilation date as YYYY-MM-DD. - Added a "getType()" method, returning the database type (1--24). - Added a "getFields()" method, returning the supported fields. - Rewrote the "lookup()" method: it now accepts either a field name (which could be a MULTIPLE field), or an array of field names, and it will return either a single field value (if a single field given), or an array (possibly named) of values found. 7.1.0 Thu Jul 23 15:15:36 2015 Removed dependency php_gmp Fixed shared memory issues Fixed binary read functions Restructure lookup algorithm 7.0.0 Wed Aug 13 12:41:16 2014 Added support to IP2Location IPv6 DB2-DB24 6.00 Wed May 08 08:43:22 2013 Added support to IP2Location DB21-24 Added new lookup method MEMORY_CACHE, and SHARED_MEMORY New structure to use IP2Location class 5.00 Fri Jan 14 09:59:15 2011 Added support to IP2Location DB19-20 Added new public function "getMcc" Added new public function "getMnc" Added new public function "getMobileBrand" 4.00 Thu Oct 01 13:09:43 2009 Merged all functions into one class Changed functions name 3.00 Wed Aug 13 10:00:00 2008 Added support to IP2Location DB15-18 Added new public function "IP2Location_get_idd_code" Added new public function "IP2Location_get_area_code" Added new public function "IP2Location_get_weather_code" Added new public function "IP2Location_get_weather_name" 2.20 Tue Sep 25 00:00:00 2007 Support PHP4 and PHP5 2.10 Fri Oct 20 00:00:00 2006 Support IP2Location DB11, DB12, DB13 & DB14 2.00 Fri Oct 20 00:00:00 2006 Support IP2Location IPv6 1.30 Wed Nov 23 16:59:58 2005 Minor Bug Fix 1.20 Thu Nov 17 16:59:58 2005 Minor Bug Fix 1.10 Thu Oct 27 16:59:58 2005 Support Big Endian Machines 1.00 Thu Oct 13 16:59:58 2005 First release for PHP 4.0 and above Added new public function "IP2Location_open" Added new public function "IP2Location_close" Added new public function "IP2Location_get_all" Added new public structure "IP2Location" Added new public structure "IP2LocationRecord"