Добрый день.
Тут возникла задача — перенаправлять с сайта на Drupal пользователей из-за границы на другой сайт.
Соответственно вопросы появились:
1. Как запустить на выполнение код до загрузки других модулей Drupal?
2. Как определить, что пользователь из другой страны (есть ли общедоступные базы IP)?
Комментарии
Думаю, htaccess может помочь. Поищите информацию по нему.
Знакомый реализовывал: прописывался диапазон IP-адресов, маски, которые нужно перенаправить.
Узнать подробности не представляется возможным
на nic.ru база есть.
Есть модуль объявлений по geo ip.
http://drupal.org/project/ad_geoip
Подумай прежде чем делать. Живой пример. Наша компания Российская, но в инет заходим через спутник, и провайдер и IP в Германии, думаю что мы не одиноки. Может проще тупо определять язык броусера?
Но нам нужно перенаправлять именно пользователей из Европы на другой сайт.
И язык браузера может у российского гражданина стоять также английский, например.
Можно просто спросить пользователя во избежание недоразумений.
Или вот почитай.
Посмотри в сторону
pear/net-geo или net-geoip
или вот тоже по теме. Книжка хорошая папалась - «PHP-трюки»
1. Установите модуль ip2nation.
2. В index.php, или site/default/settings.php впишите сверху такое:
<?php
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$country = ip2nation_get(getRealIpAddr());
$redirect_url = 'http://google.com/'; // Ссылку поменять на вашу
$europe = array('se', 'es', 'fr'); // Массив можно продолжить своими странами. Индексы — двубуквенные ISO
if (isset($europe[$country->code])) {
header('Location: '. $redirect_url);
}
?>
Код не проверял, но все должно работать.
Точность редиректа зависит от свежести базы ip2nation. Ее следует периодически обновлять с главного сайта. По моим наблюдениям, точность составляет 95%, что вполне прилично.
На заметку
Спасибо неочиф, то что нужно.
Сейчас буду пробовать