Как заблокировать сайт/показать разный контент, для разных стран?

Иногда возникает потребность заблокировать сайт или часть его контента, или отобразить другой, совершенно иной контент (например, на новостном портале нужно по умолчанию показывать пользователю новости из его страны), или же сделать какой-либо редирект. И такие “или” можно перечислять дальше, но суть всех этих задач сводится к одному, определить страну из которой пришел пользователь и после произвести какие-то действия.

Определить регион пользователя можно только по его IP-адресу, а далее используя специальные базы – определить страну или город. Хорошим примером такой базы есть SypexGeo, её мы и будем использовать дальше. Итак, разберем алгоритм действий:

1. Скачать скрипт и базы SypexGeo (здесь)

Чтобы узнать страну нам необходимо скачать скрипт “Sypex Geo для PHP 5.2+” (он используется всегда) и базу Sypex Geo Country. А после залить их в корень сайта или в ту директорию с которой вы будете использовать.

2. Определить IP пользователя

Для вычисление IP можно использовать следующую функцию:

В функции использовано несколько индексов для определения IP, это обусловлено тем, что REMOTE_ADDR не всегда возвращает правильное значение.

3. Узнать страну

Для определения страны используется следующий код

Страну узнали, теперь можем проводить необходимые операции.

Пример. Блокировка сайта.  Чтобы заблокировать сайт, допустим, для России и Украины необходимо скачать SxGeo (пункт 1), залить скачанные файлы (SxGeo.php и SxGeo.dat) в корень сайта. Далее в index.php, в самом начале, после “<?php” добавить следующий код

Все готово, теперь вместо обычной страницы сайта, пользователю будет показываться сообщение “Blocked …”.

 

загрузка комментариев