как я могу определить текущее местоположение пользователя на основе IP (я думаю, он работает таким образом).
Существуют ли библиотеки, которые его поддерживают?
благодаря
Есть сторонние решения. Ipinfodb – это тот, который я использовал в прошлом, я думаю, что у них есть библиотека php, которую вы можете использовать
<?php $user_ip = getenv('REMOTE_ADDR'); $geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip")); $country = $geo["geoplugin_countryName"]; $city = $geo["geoplugin_city"]; ?>
<?php function get_client_ip() { $ipaddress = ''; if (isset($_SERVER['HTTP_CLIENT_IP'])) $ipaddress = $_SERVER['HTTP_CLIENT_IP']; else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_X_FORWARDED'])) $ipaddress = $_SERVER['HTTP_X_FORWARDED']; else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; else if(isset($_SERVER['HTTP_FORWARDED'])) $ipaddress = $_SERVER['HTTP_FORWARDED']; else if(isset($_SERVER['REMOTE_ADDR'])) $ipaddress = $_SERVER['REMOTE_ADDR']; else $ipaddress = 'UNKNOWN'; return $ipaddress; } $PublicIP = get_client_ip(); $json = file_get_contents("https://freegeoip.net/json/$PublicIP"); $json = json_decode($json ,true); $country = $json['country_name']; $region= $json['region_name']; $city = $json['city']; ?>
Попробуйте использовать этот код с помощью службы hostip.info :
$country=file_get_contents('http://api.hostip.info/get_html.php?ip='); echo $country; // Reformat the data returned (Keep only country and country abbr.) $only_country=explode (" ", $country); echo "Country : ".$only_country[1]." ".substr($only_country[2],0,4);
<?php $query = @unserialize (file_get_contents('http://ip-api.com/php/')); if ($query && $query['status'] == 'success') { echo 'Hey user from ' . $query['country'] . ', ' . $query['city'] . '!'; } foreach ($query as $data) { echo $data . "<br>"; } ?>
Попробуйте этот код, используя этот источник. это работает!
MaxMind GeoIP – хороший сервис. У них также есть бесплатный сервис поиска на уровне города.
Возможно, вам захочется взглянуть на локатор геоинформации GeoIP, найденный в PHPClasses .
поскольку PHP полагается на сервер, в режиме реального времени не может быть предоставлено только статическое местоположение, поэтому лучше избегать использования JS для местоположения, а не использовать php. Но есть необходимость размещать данные js в php, чтобы он мог быть легко доступен для программы на сервере
IP дает вам довольно ненадежное местоположение, вы можете Ajax местоположение при загрузке с помощью JS, если не важно, чтобы местоположение было сначала. (Кроме того, пользователю необходимо предоставить вам разрешение на доступ к нему.)
Html5 Геолокация