Как определить местоположение пользователя?

Ссылка скопирована
1 ответ

Какие бывают способы определить город из которого пользователь зашел на сайт?

Нашел только варианты с получением api пользователя и дальнейшей передачей в сервисы яндекса или гугла запроса, но такие методы платные. Есть еще какие-то варианты?

Дополнительно:

навигатор?

  • Kentavr16, а как дальше на основе этого получить город? Например, узнать, что человек из Москвы то?
  • MRcracker, сравнить с координатами города. Хочешь бесплатно - поищи ресурсы в интернете/составь сам для ключевых городов. Хочешь хорошо и быстро - платные апи.
  • Скачиваете базу GeoIP и пользуетесь ею. Раз в месяц можно обновлять.

    Например https://sypexgeo.net/
    spoiler

    class GeoIp {   private SxGeo $sxGeo;    public function __construct()   {     $this->sxGeo = new SxGeo(Storage::disk('local')->path('sxgeo/SxGeo.dat'));   }    public function getDetectedCountry($ip = null)   {     if (!$ip) {       $ip = real_ip();     }      $countryCode = strtolower($this->sxGeo->getCountry($ip)) ?: 'ru';     return Country::find($countryCode);   } }

    class GeoIp { private SxGeo $sxGeo; public function __construct() { $this->sxGeo = new SxGeo(Storage::disk('local')->path('sxgeo/SxGeo.dat')); } public function getDetectedCountry($ip = null) { if (!$ip) { $ip = real_ip(); } $countryCode = strtolower($this->sxGeo->getCountry($ip)) ?: 'ru'; return Country::find($countryCode); } }

    • Эта база только на бекенде работает или есть возможность получить на фронте?
    • MRcracker, может стоит вначале ознакомиться с инструментом?
    • MRcracker, В данном случае я показал использование скаченной базы. Есть возможность делать апи-запросы, но тут появляются риски упереться в бесплатные лимиты. А базу скачал раз в неделю/месяц и чекай по ней сколько влезет.
      ЗЫ. в моем примере упрощенная база, только страны. Но у них есть и более детальные, по городам.

    Ответы:

    Спросить.

    • мне нужно чтобы определялся город и пользователя спрашивали, вы из москвы?
    • даже если он не будет определяться это никого не расстроит...
    • Александр, меня расстраивает

    https://api.db-ip.com/v2/free/self
    бесплатный, но вроде есть ограничения по запросам
    При открытии html отправляешь запрос на этот адрес и в ответ получаешь json с ip, городом и прочей инфой

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Игорь Волков Ответ

    Для определения местоположения пользователя на веб-сайте можно использовать несколько различных методов. Наиболее распространенными из них являются следующие:

    1. **IP-адрес пользователя**: Один из самых простых способов определения местоположения пользователя - это использование его IP-адреса. Существует несколько API, которые позволяют получить информацию о местоположении пользователя на основе его IP-адреса. Например, можно воспользоваться API GeoIP для этой цели.

    2. **HTML5 геолокация**: Современные браузеры поддерживают HTML5 геолокацию, которая позволяет получить местоположение пользователя с использованием GPS или Wi-Fi. Для этого можно воспользоваться JavaScript API, таким как `navigator.geolocation`.

    3. **Geocoding сервисы**: Существуют различные сервисы, такие как Google Maps API или OpenStreetMap, которые предоставляют возможность определения местоположения пользователя по его координатам. Для этого необходимо отправить запрос на соответствующий сервис, передав ему координаты пользователя.

    4. **HTML5 API для определения местоположения**: Кроме геолокации, HTML5 также предоставляет API для определения местоположения пользователя на основе его IP-адреса. Для этого можно использовать `navigator.geolocation.getCurrentPosition()`.

    Пример использования HTML5 геолокации для определения местоположения пользователя на языке PHP:

    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip_address = $_SERVER['REMOTE_ADDR'];
    }
     
    $details = json_decode(file_get_contents("http://ipinfo.io/{$ip_address}/json"));
     
    $latitude = $details->loc[0];
    $longitude = $details->loc[1];
    $city = $details->city;
    $region = $details->region;
    $country = $details->country;
     
    echo "Latitude: " . $latitude . "<br>";
    echo "Longitude: " . $longitude . "<br>";
    echo "City: " . $city . "<br>";
    echo "Region: " . $region . "<br>";
    echo "Country: " . $country . "<br>";

    if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip_address = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip_address = $_SERVER['REMOTE_ADDR']; } $details = json_decode(file_get_contents("http://ipinfo.io/{$ip_address}/json")); $latitude = $details-&gt;loc[0]; $longitude = $details-&gt;loc[1]; $city = $details-&gt;city; $region = $details-&gt;region; $country = $details-&gt;country; echo "Latitude: " . $latitude . "<br>"; echo "Longitude: " . $longitude . "<br>"; echo "City: " . $city . "<br>"; echo "Region: " . $region . "<br>"; echo "Country: " . $country . "<br>";

    Этот код позволяет получить географические координаты пользователя на основе его IP-адреса и вывести информацию о его местоположении, такую как город, регион и страну.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно