CityHost.UA
Допомога і підтримка

Як скористатись модулем GeoIP?

На серверах хостингу встановлена бібліотека модуля GeoIP для apache, nginx і PHP (для всіх версій, які її підтримують).
Бібліотека GeoIP - дозволяє отримати регіон до якого належить IP адреса з якого відправляється запит.

Наші сервера обробляють 4 заголовки:

 

GEOIP_ADDR - IP адреса, з якого відправляється запит;
GEOIP_CONTINENT_CODE - код континенту (Європа, Азія, Америка і т.д.);
GEOIP_COUNTRY_CODE - код країни, якій належить IP адреса;
GEOIP_COUNTRY_NAME - назва країни, якій належить IP адреса;

 

Найменування країн і список соотвествующих кодів, доступний тут : ссылка на джерело

Доступ до даних змінним, які передаються сервером, Ви можете отримати, використовуючи .htaccess, або вбудовану бібліотеку PHP

Для доступу до значень Ви можете використовувати два типи оточення (HTTP і ENV): 

 

HTTP:GEOIP_COUNTRY_CODE або ENV:GEOIP_COUNTRY_CODE - .htaccess;
$_SERVER['HTTP_GEOIP_ADDR'] або $_SERVER['HTTP_GEOIP_COUNTRY_CODE'] - отримання даних з масиву області змінної $_SERVER для PHP;



— заблокувати доступ усім, крім IP адрес з України використовуючи .htaccess: 

 

RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} !^(UA)$
RewriteRule .* - [F]

или

SetEnvIf GEOIP_COUNTRY_CODE UA allowed_country
Allow from env=allowed_country
Deny from all

 

— заблокувати доступ усім, крім IP адрес з України та Німеччини використовуючи .htaccess 

 

RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} !^(UA|DE)$
RewriteRule .* - [F]

или

SetEnvIf GEOIP_COUNTRY_CODE UA allowed_country
SetEnvIf GEOIP_COUNTRY_CODE DE allowed_country
Allow from env=allowed_country
Deny from all

 

— заблокувати доступ усім користувачам Німеччині використовуючи .htaccess 

 

RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} ^(DE)$
RewriteRule .* - [F]

или

SetEnvIf GEOIP_COUNTRY_CODE DE denied_country
Deny from env=denied_country

 

— переадресація з основного домену на багатомовний піддомен для всих користувачів не з України, в залежності від регіону (наприклад, якщо відвідувач з Німеччини - переадресувати на піддомен DE.DOMAIN_NAME.ZONE, якщо з України - не виконувати переадресацій) використовуючи .htaccess:

 

RewriteEngine On
RewriteCond %{HTTP:GEOIP_COUNTRY_CODE} !^(UA)$
RewriteRule ^(.*) https://%{HTTP:GEOIP_COUNTRY_CODE}\.%{HTTP_HOST}/$1 [L,R=301]

 

 

— приклад релізації PHP використовуючи область глобальної змінної $_SERVER : 

 

var_dump($_SERVER['HTTP_GEOIP_ADDR']);
var_dump($_SERVER['HTTP_GEOIP_CONTINENT_CODE']);
var_dump($_SERVER['HTTP_GEOIP_COUNTRY_CODE']);
var_dump($_SERVER['HTTP_GEOIP_COUNTRY_NAME']);




— приклад релізації PHP використовуючи функцію getenv() :

 

var_dump(getenv(HTTP_GEOIP_ADDR));
var_dump(getenv(HTTP_GEOIP_CONTINENT_CODE));
var_dump(getenv(HTTP_GEOIP_COUNTRY_CODE));
var_dump(getenv(HTTP_GEOIP_COUNTRY_NAME));



— приклад релізації PHP використовуючи 
бібліотеку PHP GeoIP :

 

$client_ip = $_SERVER['REMOTE_ADDR'];
var_dump(geoip_country_code_by_name($client_ip));
var_dump(geoip_continent_code_by_name($client_ip));
var_dump(geoip_country_name_by_name($client_ip));