Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: ГеоИП
цитата
05/12/08 в 22:12
 _s_[sov]
Братцы.. как сделать так чтобы КРОМЕ москвы на сайте открывалось то-то а для МОСКВЫ то-то..
Спасибо!
цитата
05/12/08 в 22:42
 dDan
Бери базу ип ту сити и фильтруй также как и ип ту кантри
цитата
05/12/08 в 22:43
 _s_[sov]
можно по подробнее. с геоИп ни работал ни разу...
цитата
05/12/08 в 23:44
 localhost
все достаточно просто решается с помощью гугля.

пошагово, установка геоипа на сервер, нужен рутовый доступ в шелл.

cd /root (или куда угодно)
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.5.tar.gz
tar xfz GeoIP-1.4.5.tar.gz
cd GeoIP-1.4.5
./configure
make
make install

установлена база, теперь нужно установить GeoCityLite:

cd /root
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gzip -d GeoLiteCity.dat.gz

mv GeoLiteCity.dat /usr/local/share/GeoIP/

теперь нужно подключить апачевский модуль к апачу:

для апача 1.3х:
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip/mod_geoip_1.3.4.tar.gz

для апача 2.х
wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz

далее распаковываем нужный модуль, к примеру для апача 1.3:
tar xfz mod_geoip_1.3.4.tar.gz

cd mod_geoip_1.3.4
если апач собран с поддержкой APXS (обычно так оно и есть), то:
apxs -cia -I/usr/local/include -L/usr/local/lib -lGeoIP mod_geoip.c

чтобы узнать путь до apxs, если вдруг понадобится:
whereis (или where) apxs

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

ищем где конфиг апача, редактируем:
mcedit httpd.conf или
nano httpd.conf или
ee httpd.conf или для тру админов: vi httpd.conf

там ищется строчка:
GeoIPEnable On

если она вдруг не найдена, то после строки
AddModule mod_geoip.c

дописывается следующее:
GeoIPEnable On
GeoIPDBFile /usr/local/share/GeoIP/GeoIP.dat
GeoIPDBFile /usr/local/share/GeoIP/GeoLiteCity.dat

по дефолту ставится в /usr/local/share/GeoIP/

перед добавлением рекомендуется сделать
ls /usr/local/share/GeoIP/
и убедится в наличии

далее апач рестартится:
apachectl restart

проверяется обычным пхп скриптом:

Код:

<?

print_r($_SERVER);

?>


который вызывается из браузера,
если все установлено верно, то в списке значений будут такие:

[GEOIP_ADDR] => xxx.xxx.xx.xx
[GEOIP_AREA_CODE] => 0
[GEOIP_CITY] => Moscow
[GEOIP_CONTINENT_CODE] => AS
[GEOIP_COUNTRY_CODE] => RU
[GEOIP_COUNTRY_NAME] => Russian Federation
[GEOIP_DMA_CODE] => 0
[GEOIP_LATITUDE] => 55.752201
[GEOIP_LONGITUDE] => 37.615601
[GEOIP_METRO_CODE] => 0
[GEOIP_POSTAL_CODE] =>
[GEOIP_REGION] => 48
[GEOIP_REGION_NAME] => Moscow City


собственно программно из пхп эти значения нужно и использовать:

if (isset($_SERVER['GEOIP_REGION_NAME'] && strpos($_SERVER['GEOIP_REIGION_NAME'],"oscow")) {
exit(header("location:moscow/index.php"));
}


либо через .htaccess :

rewriteengine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^RU$
RewriteRule ^(.*)$ /index.php?lang=ru [L]
цитата
06/12/08 в 09:12
 _s_[sov]
localhost +500 icon_smile.gif
цитата
07/12/08 в 23:35
 atrius
localhost: Давно не видел такого ответа на мастере.
респект, был бы мой топик, выставил бы + много =)
еще раз респект, топик в букмарк


Эта страница в полной версии