由於IP可能被欺騙,如何建立一個能正確識別訪問者國家的PHP網站?限制訪問特定國家的PHP網站
0
A
回答
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;
}
1
這是本質上給出了互聯網的匿名性問題,但欺騙IP地址以獲取貴國不合法的內容在技術上在大多數地方是犯罪行爲。
您需要盡一切努力確保您的網站遵循媒體和信息的分發限制,但有些事情只是不切實際的防範。您可以得到的最接近的數據是通過實際的物理地址驗證,例如信用卡上的帳單地址或向某人寄送一個PIN碼以進行註冊,但這兩個選項都會代表用戶或您自己承擔費用。
@Sarfraz,謝謝。我會試一試。不太清楚正則表達式濾除了什麼。 – cheapskate 2009-12-17 06:35:37
與使用代理相比,此代碼更容易失敗:只需將傳出請求中的標頭設置爲允許的IP。沒有代理需要。這是衆所周知的,例如在美國之外觀看喜劇中心。 – McPherrinM 2009-12-17 06:35:49
你可能是對的,但是在使用這個函數的時候我們還沒有看到joomla的任何問題。如果你看過一個,請告訴我們。謝謝 – Sarfraz 2009-12-17 06:42:46