We'll create fresh WordPress site with IP-to-Country installed. You have 20 minutes to test the plugin after that site we'll be deleted.
IP-to-Country is a plugin which doesn’t provide any output to users, but which
may be used by plugin authors to quickly and easily find, in which country an
IP address is located.
To do so the plugin uses data files from either http://ip-to-country.webhosting.info
(IPv4 only) or http://software77.net/geo-ip/ (both IPv4 and IPv6).
Other sources are possible as long as they have the same format: CSV file,
fields enclosed with quotes (“) and separated with comma (,), lines ending
with LF (\n). Five columns:
Note: In order to import IPv6 addresses, IPv4 must be imported first. The
reason is, IPv6 database does not carry the full country information with
it, while the IPv4 database does.
Operations:
To detect if IP-to-Country plugin is installed:
$ip2c_available = class_exists(‘PepakIpToCountry’);
To find information about a numeric IP address:
$country = PepakIpToCountry::IP_to_Country_Full(‘8.8.8.8’);
// returns ‘UNITED STATES’
$country = PepakIpToCountry::IP_to_Country(‘8.8.8.8’);
$country = PepakIpToCountry::IP_to_Country_XX(‘8.8.8.8’);
// both return ‘US’
$country = PepakIpToCountry::IP_to_Country_XXX(‘8.8.8.8’);
// returns ‘USA’
$country = PepakIpToCountry::IP_to_Country_Info(‘8.8.8.8’);
// returns Array(‘iso_name’=>’UNITED STATES’, ‘iso_code2’=>’US’, ‘iso_code3’=>’USA’)
$image = PepakIpToCountry::IP_to_Country_Flag(‘8.8.8.8’);
// returns ”
You may leave the IP address empty; in that case, IP address of currently
active user is used instead.
Note: All requests are cached, so there shouldn’t be a noticeable difference
between reading IP_to_Country_Info and reading all three pieces of information
separately using the _Full, _XX and _XXX functions.
To interface your plugin’s tables to IP-to-Country plugin’s tables within SQL,
a function Subselect
is published:
$subselect = PepakIpToCountry::Subselect($ip, $countryfield);
$ip
is a field that contains IP address in the form of one 32bit number, e.g.$countryfield
is the field you want returned. It can be one of the following:Note: No checking or validation is done on either of these parameters. It is assumed
they are field names, NOT strings. DO NOT EVER USE VALUES THAT YOUR USERS CAN
INFLUENCE! This is important! If you let users supply arguments to Subselect(), you
are letting them to do whatever they like with your database!
This function only works with IPv4 addresses.
Example usage:
if (class_exists(‘PepakIpToCountry’))
$field = PepakIpToCountry(“INET_ATON(b.ip_addr)”, ‘iso_code2’);
else
$field = ‘NULL’;
$sql = “SELECT b.*, ${field} country_code FROM ${wpdb->prefix}banlist b WHERE …”;
Note: This plugin requires PHP5. If you want it to work with ZIP files
(e.g. for updating IP-country info from the default location), your PHP
must have extension php_zip enabled.