2.8.19. Определение страны посетителя в PHP

Варианты использования кода страны в .htaccess описаны здесь.

Каждый запрос на сайт содержит специальный заголовок HTTP_GEOIP_COUNTRY_CODE, в котором содержится двухбуквенный код страны посетителя (ISO 3166). Страна определяется исходя из IP-адреса посетителя по данным MaxMind GeoLite.

Получить двухбуквенный код страны в PHP можно из серверной переменной $_SERVER['HTTP_GEOIP_COUNTRY_CODE']. Пример кода для блокировки POST-запросов из любых стран, кроме Украины:

if ($_SERVER['HTTP_GEOIP_COUNTRY_CODE'] != 'UA' && !empty($_POST)) {
    die('Access denied');
}
Содержание

    (2)

    Комментарии

    MaxQNEI
    Питання наступне. А як дізнатися місто за IP якщо запит прийшов через мобільну мережу (Vodafone, Lifecell, ...). MaxMind, Google GeoIP кажуть що це Київ хоча запити йдуть з Черкас, Львів, Чернгів.
    verliber
    Нажаль, але коректно визначити місто, з якого робився запит, буде доволі складно навіть для адрес інтернет-провайдерів. Ви можете спробувати скористатись платною версією бази даних https://www.maxmind.com/en/geoip2-databases , але коректність визначення міста для адрес мобільних операторів, скоріш за все, буде дуже низька.
    MaxQNEI
    Плак плак. =)
    Велике ДЯКУЮ!
    rudenko
    Тільки оператор знає в якому місті і кому видається IP адреса, всі бази які є в інтернет, в тому числі і MaxMind побудовані на відкритих даних і визначають місто по даним, які вказані во WHOIS для блока IP адрес.
    rudenko
    Якщо необхідно блокувати POST запити з будь-якої крахни, окрім України, то використовуйте код:

    if ($_SERVER['HTTP_GEOIP_COUNTRY_CODE'] != 'UA' && !empty($_POST)) {
    die('Русский военный корабль ...');
    }