Geo IP Location

Коментарии

It should be noted that this extension has now been superseded by the GeoIP2 API that MaxMind now produces. There is a pure-PHP set of classes and a C library and extension you can optionally install. The code can be found in various projects on MaxMind's GitHub page: https://github.com/maxmind/
2013-12-26 19:43:46
http://php5.kiev.ua/manual/ru/book.geoip.html
Автор:
If you still want to use legacy binaries but also need IPv6 support this should help: 

In order to support IPv6->Country code easily and without unnecessary files based on the integration above:

Grab a copy of the latest legacy IPv6 data (I'm assuming you already have IPv4 binary):

wget http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz
Decompress and move it to a dir accessible to your web server:

gunzip GeoIPv6.dat
mv GeoIPv6.dat /etc/usr/share/GeoIP/GeoIPv6.dat
Grab a copy of geoip.inc from the Maxmind git dir (https://github.com/maxmind/geoip-api-php/blob/master/src/geoip.inc) and save it somewhere you can access wherever you'll need to run geoip.

If you have php5-geoip installed as I did, remove it with sudo apt-get remove php5-geoip; purge as necessary.

With the above done you can now test incoming IP address for v4 or v6 and get appropriate results.

Example:

<?php
include_once('geoip.inc');

//set an IPv6 address for testing
$ip='2601:8:be00:cf20:ca60:ff:fe09:35b5';

/*
test if $ip is v4 or v6 and assign appropriate .dat file in $gi
run appropriate function geoip_country_code_by_addr() vs geoip_country_code_by_addr_v6()   
*/
if((strpos($ip":") === false)) {
   
//ipv4
   
$gi geoip_open("/usr/share/GeoIP/GeoIP1.dat",GEOIP_STANDARD);
   
$country geoip_country_code_by_addr($gi$ip);
}
else {
   
//ipv6
   
$gi geoip_open("/usr/share/GeoIP/GeoIPv6.dat",GEOIP_STANDARD);
   
$country geoip_country_code_by_addr_v6($gi$ip);
}
echo 
$ip "<br>" $country;
This is specifically for Countrybut can easily be replicated for City data.
2015-05-08 09:00:26
http://php5.kiev.ua/manual/ru/book.geoip.html
With GeoIP2, the easiest way is to:

* Grab the latest GeoIP2 Lite Database(s): https://dev.maxmind.com/geoip/geoip2/geolite2/
* Grab the latest geoip2.phar: https://github.com/maxmind/GeoIP2-php/releases

<?php
require_once("geoip2.phar");
use 
GeoIp2DatabaseReader;
// City DB
$reader = new Reader('/path/to/GeoLite2-City.mmdb');
$record $reader->city($_SERVER['REMOTE_ADDR']);
// or for Country DB
// $reader = new Reader('/path/to/GeoLite2-Country.mmdb');
// $record = $reader->country($_SERVER['REMOTE_ADDR']);
print($record->country->isoCode "\n");
print(
$record->country->name "\n");
print(
$record->country->names['zh-CN'] . "\n");
print(
$record->mostSpecificSubdivision->name "\n");
print(
$record->mostSpecificSubdivision->isoCode "\n");
print(
$record->city->name "\n");
print(
$record->postal->code "\n");
print(
$record->location->latitude "\n");
print(
$record->location->longitude "\n");
$>
2019-01-05 11:51:23
http://php5.kiev.ua/manual/ru/book.geoip.html

    Поддержать сайт на родительском проекте КГБ