Ограничение доступа для определенной страны по IP

VAD

Новичок
Ограничение доступа для определенной страны по IP

Нужно для определенной страны показывать другую версию сайта для всех остальных нормальный сайт. Я понимаю как это нужно делать, но времени катастрофически не хватает может кто-нибудь готов взятся за вознаграждение. Оплата по web money. Скрипт на PHP можно с использованием MySQL если нужно.
 

fixxxer

К.О.
Партнер клуба
установить на хостинге mod_geoip и проверять значение $_SERVER["GEOIP_COUNTRY_CODE"]
 

Alexandre

PHPПенсионер
или используй модуль php_geoip http://pecl.php.net/package/geoip, хотя первый вариант можно вообще разрулить на уровне апача (если два независимых сайта)

если ни того ни друго нет возможности установить, то напиши мне на мыло или в приват - обсудим
 

Alexandre

PHPПенсионер
phprus а чем решение http://www.maxmind.com/app/php отличается от http://pecl.php.net/package/geoip

Ответ: это одно и тоже решение
There are three methods of querying the GeoIP databases from PHP. The easiest to setup is the Pure PHP API. The setup for the high performance PHP extension and mod_geoip APIs is more advanced.
а вот PEAR требует модуль шаремемори, что есть не на каждом хостинге, по этому есть много и много ньюансов, а у человека мало времени и вообще пост он этот не читает.
 

phprus

Moderator
Команда форума
Alexandre
Ответ: это одно и тоже решение
Да? Начнем с того что эти решения написаны на разных языках. Модуль ссылка на который есть на странице http://www.maxmind.com/app/php написан на чистом php и не требует компиляции дополнительных модулей, а вот http://pecl.php.net/package/geoip как раз таки требует пересборки php и по этому его тоже не на каждый хостинг поставиш в отличие от http://www.maxmind.com/app/php

-~{}~ 28.06.07 18:17:

а вот PEAR требует модуль шаремемори,
Не обязательно. это требование зависит от режима кеширования базы в памяти.
 

Alexandre

PHPПенсионер
Да? Начнем с того что эти решения написаны на разных языках.
ну там два модуля...
один из которых лежит в ПЕЦЛ..
второе модуль пхпшный - требует шаредмемори, хотя переписать его не сложно.
я же говорил - тонкостей много
 

phprus

Moderator
Команда форума
Alexandre
требует шаредмемори,
Кто вам такое сказал? Это зависит от режима открытия базы (GEOIP_STANDARD, GEOIP_MEMORY_CACHE, GEOIP_SHARED_MEMORY), так вот если не использовать режим GEOIP_SHARED_MEMORY то шаредмемори не требуется.
 

VAD

Новичок
Попросил админов установить mod_geoip на сервак они установили и прислали мне какие то коды и сказали что они не занимаются поддержкой скриптов других производителей. А я непонимаю что это за хрень. Но страну так и не определяет я попробовал скриптик запустить. Что делать? кто может помочь за вознаграждение
 

phprus

Moderator
Команда форума
VAD
Ты пробовал читать вот эту страницу: http://www.maxmind.com/app/mod_geoip ?
На ней есть то, что тебе нужно:
GeoIPEnable On
GeoIPDBFile /path/to/GeoIP.dat

RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^CA$
RewriteRule ^(.*)$ http://www.canada.com$1 [L]
Я думаю исходя из названий ты сможешь разобраться как переделать этот фрагмент кода для своих нужд. Писать это нужно в файл .htaccess. mod_rewrite подробнее описан тут: http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
 

VAD

Новичок
Если я ставлю этот код у меня выдает Internal Server Error. Путь к базе прописываю дефолтный. Вопрос в том что я толком не знаю правильно ли мне установили этот модуль и вообще залили ли базу

-~{}~ 04.07.07 18:08:

Выяснил у админов путь к базе . Ставлю в htaccess вот этот код и выдает Internal Server Error Немогу понять в чем дело.

GeoIPEnable On
GeoIPDBFile /usr/src/GeoIP-1.4.2/data/GeoIP.dat

RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^GR$
RewriteRule ^(.*)$ http://www.canada.com$1 [L]
 

VAD

Новичок
в лог файле написано

80.76.56.170 - - [04/Jul/2007:21:59:54 +0300] "GET / HTTP/1.1" 500 - "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"


на странице пишет:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, [email protected] and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.


Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request
 

phprus

Moderator
Команда форума
VAD
Это строчка не из error.log, а из access.log. Тебе же надо смотреть то, что пишется в error.log при возникновении этой ошибки.
 

Alexandre

PHPПенсионер
Попробуй убрать реврайтовские строчки, оставь только

GeoIPEnable On
GeoIPDBFile /usr/src/GeoIP-1.4.2/data/GeoIP.dat
 

phprus

Moderator
Команда форума
Alexandre
А может быть не будем гадать и посмотрим, что там apache в error.log пишет?

VAD
Пожалуйста напиши помимо ошибки из error.log еще и текст твоего htaccess-файла.
 

VAD

Новичок
Автор оригинала: Alexandre
Попробуй убрать реврайтовские строчки, оставь только

GeoIPEnable On
GeoIPDBFile /usr/src/GeoIP-1.4.2/data/GeoIP.dat
Попробовал та же самая ошибка

в accesslog:

80.76.56.170 - - [06/Jul/2007:10:31:14 +0300] "GET / HTTP/1.1" 200 18362 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"

в error log:

[Fri Jul 6 12:06:09 2007] [alert] [client 80.76.56.170] /home/investru/public_html/.htaccess: Invalid command 'GeoIPEnable', perhaps mis-spelled or defined by a module not included in the server configuration

Похоже админы криво модуль установили судя по лог файлу. я правильно понимаю?
 

VAD

Новичок
Всем большое спасибо. Наконец-то мне удалось. Оказалось что админы криво установили. Теперь проблема с редиректом

Если набираю в браузере http://www.mydomain.ru все супер работает если http://www.mydomain.ru/rus например. Страница не отображается вообще

код в хтааксесе:

GeoIPEnable On
GeoIPDBFile /usr/src/GeoIP-1.4.2/data/GeoIP.dat

RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^GR$
RewriteRule ^(.*)$ http://www.mydomain.com$1 [L]
 
Сверху