Итак, начнем с загрузки и установки базы
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
sudo mkdir -v /usr/share/GeoIP
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat
Теперь необходимо установить модуль для PHP sudo apt-get install php5-geoip
Все готово, можем проверять работу, для этого сделаем маленький тестовый скрипт sudo vi /var/www/geo.php
который будет содержать следующее <?php
var_dump(geoip_record_by_name('ya.ru'));
?>
Наберем в браузере http://serverip/geo.php
и если мы все сделали правильно, то увидим следующее array(11) {
["continent_code"]=>
string(2) "AS"
["country_code"]=>
string(2) "RU"
["country_code3"]=>
string(3) "RUS"
["country_name"]=>
string(18) "Russian Federation"
["region"]=>
string(2) "48"
["city"]=>
string(6) "Moscow"
["postal_code"]=>
string(0) ""
["latitude"]=>
float(55.752201080322)
["longitude"]=>
float(37.615600585938)
["dma_code"]=>
int(0)
["area_code"]=>
int(0)
}
Для примера можете проверить данные своего IP. Из этого массива нам для определения языка нужен элемент с индексом "country_code"
. Дальше все еще проще, чтобы показывать версию на русском языке необходимо для начала определить страну по IP клиента $country_code = geoip_record_by_name($_SERVER['REMOTE_ADDR']);
и проверить, входит ли его страна в зону рускоязычных (это, например, Украина, Россия, Белоруссия) if (in_array($country_code, array('UA', 'RU', 'BY'))){
$lang = 'ru';
}else{
$lang = 'en';
}
Это же не Ubuntu Way! :)
ОтветитьУдалить