Редирект по странам

vave

Полезный
Регистрация
22 Июн 2007
Сообщения
466
Реакции
16
Подскажите пожалуйста, как сделать редирект по странам, с htaccess не получается, можеи реально организовать на php?

Нужно сделать что бы пользователи с России переходили на отдельную страницу.
 
Подскажите пожалуйста, как сделать редирект по странам, с htaccess не получается, можеи реально организовать на php?
Нужно сделать что бы пользователи с России переходили на отдельную страницу.
Готовое решение - любая TDS, например simple tds, можно оттуда выдрать код, редиректящий в зависимости от страны.
Если гибкость тдс не нужна - гугли по php geoip, в манах операторов geoip_* есть примеры.
 
смотрел я в гугле про геоип, но там столько всего расписано что мало чего понятно, есть ли готовый скрипт?
 
Можно примерно так...
PHP:
function whois($ip) {
  if ($ip!="") {
    $sock = fsockopen ("whois.ripe.net",43,$errno,$errstr);
    if ($sock) {
       fputs ($sock, $ip."\r\n");
      while (!feof($sock)) {
        $str.=trim(fgets ($sock,128)." <br>");
      }
    }
    else {
          $str.="$errno($errstr)";
      return;
    }
    fclose ($sock);
  }
  return $str;
  } 

$i = getenv('REMOTE_ADDR'); 
$qp =  whois($i);
$need = "country:";
$pos = strpos($qp,$need);
$search = substr($qp,$pos,18);
$excount = explode(":", $search);
$c = trim($excount[1]);

if(strtoupper($c) == "RU")
{
//для России
}
else
{
//Для остальных стран
}
 
что-то не работает..:confused:
 
смотрел я в гугле про геоип, но там столько всего расписано что мало чего понятно, есть ли готовый скрипт?
Может лучше по языку, или тебе обязательно с геоип?
По языку все просто:
PHP:
<?php
   if($_SERVER['HTTP_ACCEPT_LANGUAGE'] = 'ru') {
    header('Location: http://www.yandex.ru'); }
else { 
    header('Location: http://www.google.com');}
?>
 
Дергать каждый раз ripe.net по 80 порту - не лучшее решение, http-запрос может повиснуть, к тому же далеко не у всех ип/доменов есть поле Country в whois. Решение определения по языку браузера аналогично будет некорректным в N>10 процентах случаев (юзер из албании юзает английский фаерфокс).
Код:
<?php
$i = getenv('REMOTE_ADDR'); 
$country = geoip_country_code_by_name($i);
if ($country === 'RU') {
    echo 'This host is located in Russia: ' . $country;
} else {
//  not in russia
}
?>
Geoip для корректной работы требует регулярных апдейтов базы, к тому же в паблик базах много диапазонов пропущено - процент для .ru оценить сложно, но определенно лучше юзать платные базы geoip.
 
Используй geoip, базы ищи платные, так как они более полные и более актуальные.

По geoip проверяешь, если не так то давай пользователю возможность самостоятельно выбрать правильную дислокации. Это нормальная практика и она используется в большинстве случаев.
 
Назад
Сверху