У меня есть веб-сайт, предназначенный только для посетителей из США и Канады. Я не хочу, чтобы это было видно другим посетителям.
Я хочу использовать решение для геотаргетинга, но у меня есть хостинг Amazon, который вернул текущий IP-адрес пользователя, так что есть ли способ узнать текущее местоположение пользователя или мы можем сделать это другим способом?
Итак, основываясь на тегах, я думаю, вы пытаетесь сделать это на уровне PHP.
Могу добавить, что это не единственный вариант, есть и другие, а именно:
Итак, путь PHP
Логика, по сути, просто смотрит на IP-адрес пользователя, определяет страну, а затем использует оператор IF, чтобы узнать, разрешена ли эта страна пользователя (если да, сделайте что-то, запретите)
Мы воспользуемся бесплатным База IP-адресов MaxMind (GeoLite2 City) для определения страны происхождения пользователя.
<?php
// MaxMind Setup
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;
$db =new Reader('GeoLite2-City.mmdb');
$client_ip=$db->city($_SERVER['REMOTE_ADDR']);
$client_country=$client_ip->country->isoCode;
// Specification of allowed_countries
$allowed_countries=array("US","CA");
// Blocking Logic
if(!in_array($client_country,$allowed_countries)) {
header("HTTP/1.0 403 Forbidden");
echo "<h1>Access Forbidden!</h1>";
echo "<p>You are accessing from $client_country which is forbidden.</p>";
exit();
}
?>
<html>
<head>
<title>Example Success</title>
</head>
<body>
<h1>Welcome</h1>
<p>You have access to this website.</p>
</body>
</html>
Итак, все, что вам нужно сделать, это сначала установить API GeoIP2-php, на который опирается этот скрипт. Для этого выполните следующие команды (как указано Вот):
curl -sS https://getcomposer.org/installer | php
php composer.phar require geoip2/geoip2:~2.0
Теперь вам нужно загрузить базу данных IP в каталог веб-сайта, где будет запускаться скрипт.
wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz && gunzip GeoLite2-City.tar.gz
GeoLite2-City.mmdb
из папки в каталог сервера. Обязательно ознакомьтесь с прилагаемыми к нему лицензиями, readme и уведомлением об авторских правах..Как только вы все это сделаете - скрипт будет работать, вы можете изменить его по мере необходимости, однако в настоящее время, если пользователь обращается из страны, не указанной в $allowed_countries=array("US","CA");
строка (массив), то они будут встречены 403 Запрещенная страница.
Если страна указана, то будет отображаться все, что ниже начального раздела PHP - в этом случае <h1>Welcome</h1>
страница - как вы реализуете этот PHP-скрипт, зависит от ваших конкретных обстоятельств.