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, если из России  - RU.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));