Задать вопрос

Geo Пользователя. Доступ к сайту с одного города?

Всем добрый день.
Подскажите (помогите) пожалуйста мне нужно ограничить доступ к сайту что бы его могли видеть только в одном городе (индексировать в том числе)
Я попробовал сделать через гео ип (код приложу ниже) но получается так что с дом вай фая я захожу норм но как только переключаюсь на мобильные дные то сайт не доступен.
Код геоип

<?php
header('Content-Type: text/html; charset=utf-8'); // Установим кодировку страницы


function getUserGeo() {

if(!empty($_SERVER['HTTP_CLIENT_IP'])) {

$userIP = $_SERVER['HTTP_CLIENT_IP'];

} elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$userIP = $_SERVER['HTTP_X_FORWARDED_FOR'];

} else {

$userIP = $_SERVER['REMOTE_ADDR'];

}

$ch = curl_init();

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, 'http://ip-api.com/json/'.$userIP);

$data = curl_exec($ch);

curl_close($ch);

return json_decode($data, true);

}


$getUserGeo = getUserGeo();

if($getUserGeo['status'] == 'success') { // Если получили данные от сервиса

if($getUserGeo['city'] != 'gorod') {

// Устанавливаем 503 ответ от сервера (сервис недоступен)

@header('HTTP/1.1 503 Service Temporarily Unavailable');
@header('Status: 503 Service Temporarily Unavailable');

echo <<<HTML

<!DOCTYPE html>
<html lang="ru">

<head>

<title>Сайт временно недоступен</title>

<style>
body {
padding: 0;
margin: 0;
background: #f4f4f4;
}

h1 {
color: #333;
text-align: center;
font-size: 22px;
font-weight: 400;
padding: 30px 0 0 0;
}
</style>

</head>

<body>

<h1>Извините, но для Вашего города заблокирован доступ к нашему сайту =(</h1>

</body>

</html>

HTML;

die();


}

} else { // Если НЕ получили данные от сервиса

/*

Выполняем нужное действие, например, отправляем уведомление на почту.
В нашем случае - просто остановка скрипта.

*/

die();

}
?>

Эту часть вставил в файл конфига
include_once 'lock.php'


Вот вопроса два.
1) можно ли как то сделать доступ к сайту именно по геолокации смартфона? если да то посоветуйте какой нибудь мануал или поделитесь примерами) буду очень сильно благодарен.
2) Может быть есть какой то более простой способ ограничить доступ по региону? тк гео ип затрагивает еще и роботов и не дает им возможность анализа
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Средний 5 комментариев
Пригласить эксперта
Ответы на вопрос 1
@alekssamos
Программист любитель
Только по номеру телефона, определяя код региона. Но и здесь не всё так просто.
Я три года учился в другом городе, купил там номер, вернулся в родной город, так и пользуюсь этим номером. А доступ к сайту я бы всё равно не получил.

И даже если сделать авторизацию, скажем, через VK, да, это будет лучше, но не на много, некоторые пользователи город на странице не указывают...

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

Войдите, чтобы написать ответ

Похожие вопросы