Так как IP может быть подделан, как создать сайт PHP, который правильно идентифицирует страну посетителя?Веб-сайт PHP, ограничивающий доступ к определенной стране
ответ
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;
}
Это по своей сути является проблемой, поскольку анонимность в Интернете , но спуфинг IP-адресов для получения контента, не имеющего юридической силы в вашей стране, в любом случае, как правило, является преступлением.
Это зависит от вас, чтобы сделать все возможное, чтобы ваш сайт соблюдал ограничения на распространение информации и информации, но есть некоторые вещи, которые просто непрактичны для защиты. Самое близкое, что вы можете получить, - это выполнить фактическую проверку физического адреса, такую как адрес выставления счета на кредитной карте, или физически рассылать кому-то номер буфера для регистрации, но обе эти опции несут расходы от имени пользователя или от вас самих.
@Sarfraz, спасибо. Я попробую. Не очень уверен, что регулярное выражение фильтрует. – cheapskate
Этот код еще проще победить, чем использовать прокси-сервер: просто установите заголовок исходящего запроса на разрешенный IP-адрес. Прокси не нужен. Это хорошо известно, например, для просмотра Comedy Central за пределами США. – McPherrinM
Возможно, вы правы, но мы не видели никаких проблем с joomla при использовании этой функции. Если вы его видели, сообщите нам. спасибо – Sarfraz