CityHost.UA
Pomoc i wsparcie

Jak używać modułu GeoIP?

Na serwerach hostingu zainstalowana jest biblioteka modułu GeoIP dla apache, nginx i PHP (dla wszystkich wersji, które ją wspierają).
Biblioteka GeoIP — pozwala uzyskać region, do którego należy adres IP, z którego wysyłane jest zapytanie.

Nasze serwery przetwarzają 4 nagłówki :

GEOIP_ADDR - adres IP, z którego wysyłane jest zapytanie;
GEOIP_CONTINENT_CODE - kod kontynentu (Europa, Azja, Ameryka itd.);
GEOIP_COUNTRY_CODE - kod kraju, do którego należy adres IP;
GEOIP_COUNTRY_NAME - nazwa kraju, do którego należy adres IP;

Nazwy krajów i lista odpowiadających kodów dostępna jest tutaj : link do źródła

Dostęp do tych zmiennych, które są przekazywane przez serwer, można uzyskać, używając .htaccess lub wbudowanej biblioteki PHP

Aby uzyskać dostęp do wartości, można użyć dwóch typów środowiska (HTTP i ENV) :

HTTP:GEOIP_COUNTRY_CODE lub ENV:GEOIP_COUNTRY_CODE — .htaccess;
$_SERVER['HTTP_GEOIP_ADDR'] lub $_SERVER['HTTP_GEOIP_COUNTRY_CODE'] - uzyskiwanie danych z tablicy zmiennej $_SERVER dla PHP;



— zablokować dostęp wszystkim, z wyjątkiem adresów IP z Ukrainy, używając .htaccess:

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

lub

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

— zablokować dostęp wszystkim, z wyjątkiem adresów IP z Ukrainy i Niemiec używając .htaccess :

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

lub

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

— zablokować dostęp wszystkim użytkownikom z Niemiec używając .htaccess :

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

lub

SetEnvIf GEOIP_COUNTRY_CODE DE denied_country
Deny from env=denied_country

— przekierowanie z głównej domeny na wielojęzyczny subdomen dla wszystkich użytkowników spoza Ukrainy, w zależności od regionu (na przykład, jeśli odwiedzający jest z Niemiec - przekierować na subdomenę DE.DOMAIN_NAME.ZONE, jeśli z Ukrainy - nie przeprowadzać przekierowań) używając .htaccess:

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

— przykład realizacji PHP używając obszaru zmiennej globalnej $_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']);




— przykład realizacji PHP używając funkcji 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));



— przykład realizacji PHP używając
biblioteki 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));