0

既然 IP 可以被欺骗,那么如何建立一个正确识别访问者国家的 PHP 网站呢?

4

2 回答 2

1

鉴于互联网的匿名性,这本质上是一个问题,但无论如何,在大多数地方,欺骗 IP 地址以获取在您所在国家/地区不合法可用的内容在技术上都是犯罪行为。

您需要尽一切合理努力确保您的网站遵循媒体和信息的分发限制,但有些事情是不切实际的。您可以获得的最接近的方法是进行实际的实际地址验证,例如信用卡上的帐单地址或实际邮寄某人的密码以进行注册,但这两种选择都会代表用户或您自己产生费用。

于 2009-12-17T06:34:52.077 回答
0

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;
}
于 2009-12-17T06:30:36.093 回答