Закрыть доступ для всех стран Кроме России

H3
На сайте с 03.04.2013
Offline
49
7988

Всем привет. Появилась необходимость закрыть доступ к сайту для всех стран кроме России и СНГ, в интернете ничего конкретного не нашел, понятно что надо с помощью .htaccess но вот как понять какие диапазоны IP и т.д. Может кто знает как организовать такую фильтрацию доступа? Буду крайне признателен. Заранее спасибо за Ваше внимание.

Фильмы онлайн (http://filmi-hd.online) Так, глядишь кому пригодится)))
owx
На сайте с 27.06.2009
Offline
100
owx
#1

Как вариант, можно использовать сторонние библиотеки, например SxGeo, но какой у них процент успешных определений я не могу подсказать.


include 'SxGeo.php';
$SxGeo = new SxGeo('SxGeo.dat', SXGEO_BATCH | SXGEO_MEMORY);
if($SxGeo->getCountry($_SERVER['REMOTE_ADDR']) !== 'RU') {
exit('Доступ к сайту возможен только для пользователей из РФ');
}
H3
На сайте с 03.04.2013
Offline
49
#2

AL этот скрипт достаточно прописать в index.php Я правильно понимаю?

astraliens
На сайте с 25.09.2009
Offline
54
#3

погуглите htaccess geoip и nginx geoip , вопрос не сложный

ну или тот же geoip от maxmind прямо в коде использовать, примеров все там же в гугле много

ASTRALiENS - разработка сайтов (http://astraliens.net)
impossible
На сайте с 12.01.2008
Offline
210
#4

Как варик задавать вопрос при входе на сайт: вопрос на русском (на который ответят тока русские, и обязательно с русской клавиатурой). Потом тому кто заходил (ответил на вопрос) ставить куку и при последующем заходе вопрос не задавать.

owx
На сайте с 27.06.2009
Offline
100
owx
#5
Hellion35:
AL этот скрипт достаточно прописать в index.php Я правильно понимаю?

Для того чтобы сказать наверняка, нужно знать, какой используется скрипт. Вполне возможно, что будет достаточно.

H3
На сайте с 03.04.2013
Offline
49
#6

Спасибо всем. У меня получилось сделать с помощью geoIP. Открыл доступ для UA KZ BY и RU пробую проверить с помощью анонимайзеров. По итогу пускает только из России. Базы обновил от maxmind. Может анонимайзеры кривые или еще в чем то проблема может быть?

p.s. и еще когда указываю в .htaccess

GeoIPDBFile

/usr/share/GeoIP/GeoIP.dat

При попытке зайти на сайт выдает 500 ошибку(((

astraliens
На сайте с 25.09.2009
Offline
54
#7
Hellion35:

p.s. и еще когда указываю в .htaccess

GeoIPDBFile
/usr/share/GeoIP/GeoIP.dat

При попытке зайти на сайт выдает 500 ошибку(((

проверьте есть ли сам файл там и права доступа на него.. и подключен ли сам модуль

ну и в логах должно быть описание проблемы более детально

H3
На сайте с 03.04.2013
Offline
49
#8

В логах вообще тишина((( Что касается файла то да есть, права выставил на файл, работу мода проверил с помощью скрипта

<pre>

Whence are you come to here?:
<?php
$country_code = apache_note("GEOIP_COUNTRY_CODE");
$region = apache_note("GEOIP_REGION");
$country_name = apache_note("GEOIP_COUNTRY_NAME");
$city = apache_note("GEOIP_CITY");
echo "Country code: " . $country_code . "\n";
echo "Region: " . $region . "\n";
echo "Name of country: " . $country_name . "\n";
echo "City: " . $city . "\n";
?>
</pre>

страну определяет без проблем. Базу GeoIP обновлял от maxmind

Что касается настроек, делал вроде все что необходимо.

Логи смотрел по адресу /var/log/apache2/error.log

Если Вы про этот лог то там тишина, может я куда то не туда смотрю?

astraliens
На сайте с 25.09.2009
Offline
54
#9

и там и в логах виртхоста, если они отдельно ведутся

ps. Вы зачем-то городите слишком много, на апач возлагаете определение географии и потом из php кода достаёте данные, если всецело нужно обрезать доступ ко всему, кроме нужных стран апачем, то правильнее будет сделать как-то так

<IfModule mod_geoip.c>

GeoIPEnable On
SetEnvIf GEOIP_COUNTRY_CODE UA AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE RU AllowCountry
SetEnvIf GEOIP_COUNTRY_CODE KZ AllowCountry
Allow from env=AllowCountry
Deny from all
</IfModule>

а если нужно именно в php коде, то правильнее было бы напрямую из php работать с базой geoip, определять при первом обращении страну, сохранять в сессию это значение и в дальнейшем при наличии в сессии данных о географии более не перепроверять ничего каждый раз

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий