PHP веб-сайт, который ограничил доступ к конкретной стране - PullRequest
0 голосов
/ 17 декабря 2009

Поскольку IP можно подделать, как можно создать сайт PHP, который правильно идентифицирует страну посетителя?

Ответы [ 2 ]

1 голос
/ 17 декабря 2009

По сути, это проблема, учитывая анонимность Интернета, но подделка IP-адресов для получения контента, не имеющего юридической силы в вашей стране, в любом случае технически является преступлением в большинстве мест.

Вы должны приложить все разумные усилия, чтобы убедиться, что ваш сайт соответствует ограничениям на распространение медиа и информации, но есть некоторые вещи, от которых просто нецелесообразно защищаться. Самое близкое, что вы можете получить, - это проверить фактический физический адрес, такой как платежный адрес на кредитной карте, или физически отправить кому-то пин-код для регистрации, но оба этих варианта несут расходы от имени пользователя или вас самих.

0 голосов
/ 17 декабря 2009

Joomla использует нижеприведенную функцию для получения IP-адресов, это очень универсальная хорошая функция, которая позволяет избежать возможных читов, вы можете использовать ее:

function get_ip()
{
    $ip = false;

    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    }

    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
         $ips = explode (', ', $_SERVER['HTTP_X_FORWARDED_FOR']);

         if ($ip != false)
         {
              array_unshift($ips,$ip);
              $ip = false;
         }

         $count = count($ips);

         # exclude IP addresses reserved for LANs
         for ($i = 0; $i < $count; $i++)
         {
              if (!preg_match("/^(10|172\.16|192\.168)\./i", $ips[$i]))
              {
                  $ip = $ips[$i];
                  break;
              }
         }
    }

    if (false == $ip AND isset($_SERVER['REMOTE_ADDR']))
    {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    return $ip;
}
...