Это можно сделать, используя упаковку GeoIP2 (замененный GeoIP). Вы можете установить пакет с композитором и связать либо free database, либо приобрести более точную базу данных от MaxMind в зависимости от уровня точности, который вы хотели бы (города, страны и т. Д.).
Пример кода взяты из Github:
<?php
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;
// This creates the Reader object, which should be reused across
// lookups.
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');
// Replace "city" with the appropriate method for your database, e.g.,
// "country".
$record = $reader->city('128.101.101.101');
print($record->country->isoCode . "\n"); // 'US'
print($record->country->name . "\n"); // 'United States'
print($record->country->names['zh-CN'] . "\n"); // '美国'
print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
print($record->city->name . "\n"); // 'Minneapolis'
print($record->postal->code . "\n"); // '55455'
print($record->location->latitude . "\n"); // 44.9733
print($record->location->longitude . "\n"); // -93.2323
Свободная база данных не плохо, но я бы рекомендовал покупку профессиональной базы данных, если вам это нужно, чтобы быть как можно более точным без использования GPS. Это главным образом потому, что список часто обновляется, когда блоки IP проданы и т. Д.
Вы пробовали 'navigator.geolocation' – progrAmmar
На веб-сайте, на котором работает компьютер, местоположение может быть неточным. Потому что у него нет подключенного к нему устройства gps – Arun
да, я использовал навигатор.geolocation, но места не точны. –